Feature Tip: Add private address tag to any address under My Name Tag !
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 6 from a total of 6 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 19581880 | 300 days ago | IN | 0 ETH | 0.00112695 | ||||
Approve | 19581851 | 300 days ago | IN | 0 ETH | 0.00116476 | ||||
Approve | 19581806 | 300 days ago | IN | 0 ETH | 0.00127033 | ||||
Approve | 19581561 | 300 days ago | IN | 0 ETH | 0.00115186 | ||||
Open Trading | 19581559 | 300 days ago | IN | 0 ETH | 0.00057468 | ||||
Approve | 19581545 | 300 days ago | IN | 0 ETH | 0.00083355 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
TC
Compiler Version
v0.8.20+commit.a1b79de6
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-04-04 */ /* Web: https://taochain.ai TG: https://t.me/taochainai X: https://twitter.com/taochainai */ pragma solidity 0.8.20; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval( address indexed owner, address indexed spender, uint256 value ); } contract Ownable is Context { address private _owner; address private _previousOwner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); constructor() { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; return c; } } interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IUniswapV2Router02 { function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); } contract TC is Context, IERC20, Ownable { using SafeMath for uint256; string private constant _name = unicode"TaoChain"; string private constant _symbol = unicode"TC"; uint8 private constant _decimals = 9; mapping(address => uint256) private _rOwned; mapping(address => uint256) private _tOwned; mapping(address => mapping(address => uint256)) private _allowances; mapping(address => bool) private _isExcludedFromFee; uint256 private constant MAX = ~uint256(0); uint256 private constant _tTotal = 21000000 * 10**9; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _tFeeTotal; uint256 private _redisFeeOnBuy = 0; uint256 private _marketingTaxOnBuy = 15; uint256 private _redisFeeOnSell = 0; uint256 private _marketingTaxOnSell = 15; uint256 private _redisFee = _redisFeeOnSell; uint256 private _marketingTax = _marketingTaxOnSell; uint256 private _previousredisFee = _redisFee; uint256 private _previousmarketingTax = _marketingTax; mapping(address => bool) public bots; mapping (address => uint256) public _buyMap; address payable private _devAddress = payable(0xAA508450597f7E9ED741f238542004D8A2a34dc2); address payable private _mktAddress = payable(0xAA508450597f7E9ED741f238542004D8A2a34dc2); IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair; bool private tradingOpen; bool private inSwap = false; bool private swapEnabled = true; bool public _autoAddLiquidity; uint256 public _maxTxAmount = 105000 * 10**9; uint256 public _maxWalletSize = 105000 * 10**9; uint256 public _swapTokensAtAmount = 1000 * 10**9; event MaxTxAmountUpdated(uint256 _maxTxAmount); modifier lockTheSwap { inSwap = true; _; inSwap = false; } constructor() { _rOwned[_msgSender()] = _rTotal; IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);// uniswapV2Router = _uniswapV2Router; uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; _isExcludedFromFee[_devAddress] = true; _isExcludedFromFee[_mktAddress] = true; emit Transfer(address(0), _msgSender(), _tTotal); } function name() public pure returns (string memory) { return _name; } function symbol() public pure returns (string memory) { return _symbol; } function decimals() public pure returns (uint8) { return _decimals; } function totalSupply() public pure override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { return tokenFromReflection(_rOwned[account]); } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public override returns (bool) { _transfer(sender, recipient, amount); _approve( sender, _msgSender(), _allowances[sender][_msgSender()].sub( amount, "ERC20: transfer amount exceeds allowance" ) ); return true; } function tokenFromReflection(uint256 rAmount) private view returns (uint256) { require( rAmount <= _rTotal, "Amount must be less than total reflections" ); uint256 currentRate = _getRate(); return rAmount.div(currentRate); } function removeAllFee() private { if (_redisFee == 0 && _marketingTax == 0) return; _previousredisFee = _redisFee; _previousmarketingTax = _marketingTax; _redisFee = 0; _marketingTax = 0; } function undoFees() private { _redisFee = _previousredisFee; _marketingTax = _previousmarketingTax; } function _approve( address owner, address spender, uint256 amount ) private { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _transfer( address from, address to, uint256 amount ) private { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); if (from != owner() && to != owner()) { //Trade start check if (!tradingOpen) { require(from == owner(), "TOKEN: This account cannot send tokens until trading is enabled"); } require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit"); require(!bots[from] && !bots[to], "TOKEN: Your account is blacklisted!"); if(to != uniswapV2Pair) { require(balanceOf(to) + amount < _maxWalletSize, "TOKEN: Balance exceeds wallet size!"); } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= _swapTokensAtAmount; if(contractTokenBalance >= _maxTxAmount) { contractTokenBalance = _maxTxAmount; } if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) { swapTokensForEth(contractTokenBalance); uint256 contractETHBalance = address(this).balance; if (contractETHBalance > 0) { sendETHToFee(address(this).balance); } } } bool takeFee = true; //Transfer Tokens if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) { takeFee = false; } else { //Set Fee for Buys if(from == uniswapV2Pair && to != address(uniswapV2Router)) { _redisFee = _redisFeeOnBuy; _marketingTax = _marketingTaxOnBuy; } //Set Fee for Sells if (to == uniswapV2Pair && from != address(uniswapV2Router)) { _redisFee = _redisFeeOnSell; _marketingTax = _marketingTaxOnSell; } } _tokenTransfer(from, to, amount, takeFee); } function swapTokensForEth(uint256 tokenAmount) private lockTheSwap { address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } function sendETHToFee(uint256 amount) private { _mktAddress.transfer(amount); } function openTrading(bool _tradingOpen) public onlyOwner { tradingOpen = _tradingOpen; } function manualSwap() external { require(_msgSender() == _devAddress || _msgSender() == _mktAddress); uint256 contractBalance = balanceOf(address(this)); swapTokensForEth(contractBalance); } function manualSend() external { require(_msgSender() == _devAddress || _msgSender() == _mktAddress); uint256 contractETHBalance = address(this).balance; sendETHToFee(contractETHBalance); } function bl(address[] memory bots_) public onlyOwner { for (uint256 i = 0; i < bots_.length; i++) { bots[bots_[i]] = true; } } function unBlacklist(address notbot) public onlyOwner { bots[notbot] = false; } function _tokenTransfer( address sender, address recipient, uint256 amount, bool takeFee ) private { if (!takeFee) removeAllFee(); _transferStandard(sender, recipient, amount); if (!takeFee) undoFees(); } function _transferStandard( address sender, address recipient, uint256 tAmount ) private { ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTeam ) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeTeam(tTeam); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _takeTeam(uint256 tTeam) private { uint256 currentRate = _getRate(); uint256 rTeam = tTeam.mul(currentRate); _rOwned[address(this)] = _rOwned[address(this)].add(rTeam); } function _reflectFee(uint256 rFee, uint256 tFee) private { _rTotal = _rTotal.sub(rFee); _tFeeTotal = _tFeeTotal.add(tFee); } receive() external payable {} function _getValues(uint256 tAmount) private view returns ( uint256, uint256, uint256, uint256, uint256, uint256 ) { (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getTValues(tAmount, _redisFee, _marketingTax); uint256 currentRate = _getRate(); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tTeam, currentRate); return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam); } function _getTValues( uint256 tAmount, uint256 redisFee, uint256 marketingTax ) private pure returns ( uint256, uint256, uint256 ) { uint256 tFee = tAmount.mul(redisFee).div(100); uint256 tTeam = tAmount.mul(marketingTax).div(100); uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam); return (tTransferAmount, tFee, tTeam); } function _getRValues( uint256 tAmount, uint256 tFee, uint256 tTeam, uint256 currentRate ) private pure returns ( uint256, uint256, uint256 ) { uint256 rAmount = tAmount.mul(currentRate); uint256 rFee = tFee.mul(currentRate); uint256 rTeam = tTeam.mul(currentRate); uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam); return (rAmount, rTransferAmount, rFee); } function _getRate() private view returns (uint256) { (uint256 rSupply, uint256 tSupply) = _getCurrentSupply(); return rSupply.div(tSupply); } function _getCurrentSupply() private view returns (uint256, uint256) { uint256 rSupply = _rTotal; uint256 tSupply = _tTotal; if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal); return (rSupply, tSupply); } function ChangeTaxes (uint256 redisFeeOnBuy, uint256 redisFeeOnSell, uint256 marketingTaxOnBuy, uint256 marketingTaxOnSell) public onlyOwner { _redisFeeOnBuy = redisFeeOnBuy; _redisFeeOnSell = redisFeeOnSell; _marketingTaxOnBuy = marketingTaxOnBuy; _marketingTaxOnSell = marketingTaxOnSell; } //Set minimum tokens required to swap. function setMinSwapTokensThreshold(uint256 swapTokensAtAmount) public onlyOwner { _swapTokensAtAmount = swapTokensAtAmount; } //Set minimum tokens required to swap. function toggleSwap(bool _swapEnabled) public onlyOwner { swapEnabled = _swapEnabled; } //Set maximum transaction function setMaxTxAmount(uint256 maxTxAmount) public onlyOwner { _maxTxAmount = maxTxAmount; } function setMaxWalletSize(uint256 maxWalletSize) public onlyOwner { _maxWalletSize = maxWalletSize; } function excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) public onlyOwner { for(uint256 i = 0; i < accounts.length; i++) { _isExcludedFromFee[accounts[i]] = excluded; } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"uint256","name":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"marketingTaxOnBuy","type":"uint256"},{"internalType":"uint256","name":"marketingTaxOnSell","type":"uint256"}],"name":"ChangeTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_autoAddLiquidity","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_buyMap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"bl","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_tradingOpen","type":"bool"}],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"unBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405262000018664a9b63844880005f196200034e565b62000025905f196200036e565b6006555f6008819055600f6009819055600a829055600b819055600c829055600d819055600e919091558055601280546001600160a01b031990811673aa508450597f7e9ed741f238542004d8a2a34dc29081179092556013805490911690911790556015805461ffff60a81b1916600160b01b179055655f7f37b39000601681905560175564e8d4a51000601855348015620000c0575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600654335f9081526002602090815260409182902092909255601480546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155815163c45a015560e01b815291519092839263c45a015592600480830193928290030181865afa1580156200017a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001a0919062000394565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001ec573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000212919062000394565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156200025d573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000283919062000394565b601580546001600160a01b0319166001600160a01b039283161790555f80548216815260056020526040808220805460ff1990811660019081179092553084528284208054821683179055601254851684528284208054821683179055601354909416835291208054909216179055336001600160a01b03165f6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef664a9b63844880006040516200033f91815260200190565b60405180910390a350620003c3565b5f826200036957634e487b7160e01b5f52601260045260245ffd5b500690565b818103818111156200038e57634e487b7160e01b5f52601160045260245ffd5b92915050565b5f60208284031215620003a5575f80fd5b81516001600160a01b0381168114620003bc575f80fd5b9392505050565b611d5080620003d15f395ff3fe6080604052600436106101d3575f3560e01c806370a08231116100fd578063a9059cbb11610092578063ea1644d511610062578063ea1644d514610585578063ec28438a146105a4578063f2fde38b146105c3578063f4293890146105e2575f80fd5b8063a9059cbb146104d5578063bfd79284146104f4578063c492f04614610522578063dd62ed3e14610541575f80fd5b80638da5cb5b116100cd5780638da5cb5b1461045b5780638f9a55c01461047757806395d89b411461048c57806398a5c315146104b6575f80fd5b806370a08231146103e8578063715018a6146104075780637d1db4a51461041b5780637f2feddc14610430575f80fd5b806323b872dd1161017357806349bd5a5e1161014357806349bd5a5e1461037657806351bc3c85146103955780636912652c146103a95780636d8aa8f8146103c9575f80fd5b806323b872dd146103085780632a9b8072146103275780632fd689e314610346578063313ce5671461035b575f80fd5b806318160ddd116101ae57806318160ddd146102865780631a895266146102a95780631c113d81146102ca5780632105a7e7146102e9575f80fd5b806306fdde03146101de578063095ea7b3146102205780631694505e1461024f575f80fd5b366101da57005b5f80fd5b3480156101e9575f80fd5b506040805180820190915260088152672a30b7a1b430b4b760c11b60208201525b60405161021791906118af565b60405180910390f35b34801561022b575f80fd5b5061023f61023a36600461191e565b6105f6565b6040519015158152602001610217565b34801561025a575f80fd5b5060145461026e906001600160a01b031681565b6040516001600160a01b039091168152602001610217565b348015610291575f80fd5b50664a9b63844880005b604051908152602001610217565b3480156102b4575f80fd5b506102c86102c3366004611948565b61060c565b005b3480156102d5575f80fd5b506102c86102e4366004611963565b61065e565b3480156102f4575f80fd5b506102c86103033660046119a6565b61069b565b348015610313575f80fd5b5061023f610322366004611a66565b61072d565b348015610332575f80fd5b506102c8610341366004611ab3565b610794565b348015610351575f80fd5b5061029b60185481565b348015610366575f80fd5b5060405160098152602001610217565b348015610381575f80fd5b5060155461026e906001600160a01b031681565b3480156103a0575f80fd5b506102c86107db565b3480156103b4575f80fd5b5060155461023f90600160b81b900460ff1681565b3480156103d4575f80fd5b506102c86103e3366004611ab3565b610830565b3480156103f3575f80fd5b5061029b610402366004611948565b610877565b348015610412575f80fd5b506102c8610898565b348015610426575f80fd5b5061029b60165481565b34801561043b575f80fd5b5061029b61044a366004611948565b60116020525f908152604090205481565b348015610466575f80fd5b505f546001600160a01b031661026e565b348015610482575f80fd5b5061029b60175481565b348015610497575f80fd5b50604080518082019091526002815261544360f01b602082015261020a565b3480156104c1575f80fd5b506102c86104d0366004611acc565b610909565b3480156104e0575f80fd5b5061023f6104ef36600461191e565b610937565b3480156104ff575f80fd5b5061023f61050e366004611948565b60106020525f908152604090205460ff1681565b34801561052d575f80fd5b506102c861053c366004611ae3565b610943565b34801561054c575f80fd5b5061029b61055b366004611b60565b6001600160a01b039182165f90815260046020908152604080832093909416825291909152205490565b348015610590575f80fd5b506102c861059f366004611acc565b6109e0565b3480156105af575f80fd5b506102c86105be366004611acc565b610a0e565b3480156105ce575f80fd5b506102c86105dd366004611948565b610a3c565b3480156105ed575f80fd5b506102c8610b23565b5f610602338484610b6a565b5060015b92915050565b5f546001600160a01b0316331461063e5760405162461bcd60e51b815260040161063590611b97565b60405180910390fd5b6001600160a01b03165f908152601060205260409020805460ff19169055565b5f546001600160a01b031633146106875760405162461bcd60e51b815260040161063590611b97565b600893909355600a91909155600955600b55565b5f546001600160a01b031633146106c45760405162461bcd60e51b815260040161063590611b97565b5f5b815181101561072957600160105f8484815181106106e6576106e6611bcc565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff19169115159190911790558061072181611bf4565b9150506106c6565b5050565b5f610739848484610c8d565b61078a843361078585604051806060016040528060288152602001611cf3602891396001600160a01b038a165f90815260046020908152604080832033845290915290205491906111bd565b610b6a565b5060019392505050565b5f546001600160a01b031633146107bd5760405162461bcd60e51b815260040161063590611b97565b60158054911515600160a01b0260ff60a01b19909216919091179055565b6012546001600160a01b0316336001600160a01b0316148061081057506013546001600160a01b0316336001600160a01b0316145b610818575f80fd5b5f61082230610877565b905061082d816111f5565b50565b5f546001600160a01b031633146108595760405162461bcd60e51b815260040161063590611b97565b60158054911515600160b01b0260ff60b01b19909216919091179055565b6001600160a01b0381165f9081526002602052604081205461060690611365565b5f546001600160a01b031633146108c15760405162461bcd60e51b815260040161063590611b97565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146109325760405162461bcd60e51b815260040161063590611b97565b601855565b5f610602338484610c8d565b5f546001600160a01b0316331461096c5760405162461bcd60e51b815260040161063590611b97565b5f5b828110156109da578160055f86868581811061098c5761098c611bcc565b90506020020160208101906109a19190611948565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055806109d281611bf4565b91505061096e565b50505050565b5f546001600160a01b03163314610a095760405162461bcd60e51b815260040161063590611b97565b601755565b5f546001600160a01b03163314610a375760405162461bcd60e51b815260040161063590611b97565b601655565b5f546001600160a01b03163314610a655760405162461bcd60e51b815260040161063590611b97565b6001600160a01b038116610aca5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610635565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6012546001600160a01b0316336001600160a01b03161480610b5857506013546001600160a01b0316336001600160a01b0316145b610b60575f80fd5b4761082d816113e7565b6001600160a01b038316610bcc5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610635565b6001600160a01b038216610c2d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610635565b6001600160a01b038381165f8181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610cf15760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610635565b6001600160a01b038216610d535760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610635565b5f8111610db45760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610635565b5f546001600160a01b03848116911614801590610dde57505f546001600160a01b03838116911614155b156110b957601554600160a01b900460ff16610e76575f546001600160a01b03848116911614610e765760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c6564006064820152608401610635565b601654811115610ec85760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000006044820152606401610635565b6001600160a01b0383165f9081526010602052604090205460ff16158015610f0857506001600160a01b0382165f9081526010602052604090205460ff16155b610f605760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460448201526265642160e81b6064820152608401610635565b6015546001600160a01b03838116911614610fe55760175481610f8284610877565b610f8c9190611c0c565b10610fe55760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b6064820152608401610635565b5f610fef30610877565b6018546016549192508210159082106110085760165491505b80801561101f5750601554600160a81b900460ff16155b801561103957506015546001600160a01b03868116911614155b801561104e5750601554600160b01b900460ff165b801561107257506001600160a01b0385165f9081526005602052604090205460ff16155b801561109657506001600160a01b0384165f9081526005602052604090205460ff16155b156110b6576110a4826111f5565b4780156110b4576110b4476113e7565b505b50505b6001600160a01b0383165f9081526005602052604090205460019060ff16806110f957506001600160a01b0383165f9081526005602052604090205460ff165b8061112b57506015546001600160a01b0385811691161480159061112b57506015546001600160a01b03848116911614155b1561113757505f6111b1565b6015546001600160a01b03858116911614801561116257506014546001600160a01b03848116911614155b1561117457600854600c55600954600d555b6015546001600160a01b03848116911614801561119f57506014546001600160a01b03858116911614155b156111b157600a54600c55600b54600d555b6109da8484848461141e565b5f81848411156111e05760405162461bcd60e51b815260040161063591906118af565b505f6111ec8486611c1f565b95945050505050565b6015805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f8151811061123b5761123b611bcc565b6001600160a01b03928316602091820292909201810191909152601454604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611292573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112b69190611c32565b816001815181106112c9576112c9611bcc565b6001600160a01b0392831660209182029290920101526014546112ef9130911684610b6a565b60145460405163791ac94760e01b81526001600160a01b039091169063791ac947906113279085905f90869030904290600401611c4d565b5f604051808303815f87803b15801561133e575f80fd5b505af1158015611350573d5f803e3d5ffd5b50506015805460ff60a81b1916905550505050565b5f6006548211156113cb5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610635565b5f6113d461144c565b90506113e0838261146d565b9392505050565b6013546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015610729573d5f803e3d5ffd5b8061142b5761142b6114ae565b6114368484846114db565b806109da576109da600e54600c55600f54600d55565b5f805f6114576115cc565b9092509050611466828261146d565b9250505090565b5f6113e083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611609565b600c541580156114be5750600d54155b156114c557565b600c8054600e55600d8054600f555f9182905555565b5f805f805f806114ea87611635565b6001600160a01b038f165f90815260026020526040902054959b5093995091975095509350915061151b908761168a565b6001600160a01b03808b165f9081526002602052604080822093909355908a168152205461154990866116cb565b6001600160a01b0389165f9081526002602052604090205561156a81611729565b611574848361176f565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516115b991815260200190565b60405180910390a3505050505050505050565b6006545f908190664a9b63844880006115e5828261146d565b82101561160057505060065492664a9b638448800092509050565b90939092509050565b5f81836116295760405162461bcd60e51b815260040161063591906118af565b505f6111ec8486611cbc565b5f805f805f805f805f61164d8a600c54600d54611793565b9250925092505f61165c61144c565b90505f805f61166d8e8787876117e5565b919e509c509a509598509396509194505050505091939550919395565b5f6113e083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506111bd565b5f806116d78385611c0c565b9050838110156113e05760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610635565b5f61173261144c565b90505f61173f8383611831565b305f9081526002602052604090205490915061175b90826116cb565b305f90815260026020526040902055505050565b60065461177c908361168a565b60065560075461178c90826116cb565b6007555050565b5f8080806117ac60646117a68989611831565b9061146d565b90505f6117be60646117a68a89611831565b90505f6117d5826117cf8b8661168a565b9061168a565b9992985090965090945050505050565b5f8080806117f38886611831565b90505f6118008887611831565b90505f61180d8888611831565b90505f61181e826117cf868661168a565b939b939a50919850919650505050505050565b5f825f0361184057505f610606565b5f61184b8385611cdb565b9050826118588583611cbc565b146113e05760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610635565b5f6020808352835180828501525f5b818110156118da578581018301518582016040015282016118be565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461082d575f80fd5b8035611919816118fa565b919050565b5f806040838503121561192f575f80fd5b823561193a816118fa565b946020939093013593505050565b5f60208284031215611958575f80fd5b81356113e0816118fa565b5f805f8060808587031215611976575f80fd5b5050823594602084013594506040840135936060013592509050565b634e487b7160e01b5f52604160045260245ffd5b5f60208083850312156119b7575f80fd5b823567ffffffffffffffff808211156119ce575f80fd5b818501915085601f8301126119e1575f80fd5b8135818111156119f3576119f3611992565b8060051b604051601f19603f83011681018181108582111715611a1857611a18611992565b604052918252848201925083810185019188831115611a35575f80fd5b938501935b82851015611a5a57611a4b8561190e565b84529385019392850192611a3a565b98975050505050505050565b5f805f60608486031215611a78575f80fd5b8335611a83816118fa565b92506020840135611a93816118fa565b929592945050506040919091013590565b80358015158114611919575f80fd5b5f60208284031215611ac3575f80fd5b6113e082611aa4565b5f60208284031215611adc575f80fd5b5035919050565b5f805f60408486031215611af5575f80fd5b833567ffffffffffffffff80821115611b0c575f80fd5b818601915086601f830112611b1f575f80fd5b813581811115611b2d575f80fd5b8760208260051b8501011115611b41575f80fd5b602092830195509350611b579186019050611aa4565b90509250925092565b5f8060408385031215611b71575f80fd5b8235611b7c816118fa565b91506020830135611b8c816118fa565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f60018201611c0557611c05611be0565b5060010190565b8082018082111561060657610606611be0565b8181038181111561060657610606611be0565b5f60208284031215611c42575f80fd5b81516113e0816118fa565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015611c9b5784516001600160a01b031683529383019391830191600101611c76565b50506001600160a01b03969096166060850152505050608001529392505050565b5f82611cd657634e487b7160e01b5f52601260045260245ffd5b500490565b808202811582820484141761060657610606611be056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212209cfc89b01d1353a0921e35debd4a366fa3e77971b350d179cd585631cb075e7c64736f6c63430008140033
Deployed Bytecode
0x6080604052600436106101d3575f3560e01c806370a08231116100fd578063a9059cbb11610092578063ea1644d511610062578063ea1644d514610585578063ec28438a146105a4578063f2fde38b146105c3578063f4293890146105e2575f80fd5b8063a9059cbb146104d5578063bfd79284146104f4578063c492f04614610522578063dd62ed3e14610541575f80fd5b80638da5cb5b116100cd5780638da5cb5b1461045b5780638f9a55c01461047757806395d89b411461048c57806398a5c315146104b6575f80fd5b806370a08231146103e8578063715018a6146104075780637d1db4a51461041b5780637f2feddc14610430575f80fd5b806323b872dd1161017357806349bd5a5e1161014357806349bd5a5e1461037657806351bc3c85146103955780636912652c146103a95780636d8aa8f8146103c9575f80fd5b806323b872dd146103085780632a9b8072146103275780632fd689e314610346578063313ce5671461035b575f80fd5b806318160ddd116101ae57806318160ddd146102865780631a895266146102a95780631c113d81146102ca5780632105a7e7146102e9575f80fd5b806306fdde03146101de578063095ea7b3146102205780631694505e1461024f575f80fd5b366101da57005b5f80fd5b3480156101e9575f80fd5b506040805180820190915260088152672a30b7a1b430b4b760c11b60208201525b60405161021791906118af565b60405180910390f35b34801561022b575f80fd5b5061023f61023a36600461191e565b6105f6565b6040519015158152602001610217565b34801561025a575f80fd5b5060145461026e906001600160a01b031681565b6040516001600160a01b039091168152602001610217565b348015610291575f80fd5b50664a9b63844880005b604051908152602001610217565b3480156102b4575f80fd5b506102c86102c3366004611948565b61060c565b005b3480156102d5575f80fd5b506102c86102e4366004611963565b61065e565b3480156102f4575f80fd5b506102c86103033660046119a6565b61069b565b348015610313575f80fd5b5061023f610322366004611a66565b61072d565b348015610332575f80fd5b506102c8610341366004611ab3565b610794565b348015610351575f80fd5b5061029b60185481565b348015610366575f80fd5b5060405160098152602001610217565b348015610381575f80fd5b5060155461026e906001600160a01b031681565b3480156103a0575f80fd5b506102c86107db565b3480156103b4575f80fd5b5060155461023f90600160b81b900460ff1681565b3480156103d4575f80fd5b506102c86103e3366004611ab3565b610830565b3480156103f3575f80fd5b5061029b610402366004611948565b610877565b348015610412575f80fd5b506102c8610898565b348015610426575f80fd5b5061029b60165481565b34801561043b575f80fd5b5061029b61044a366004611948565b60116020525f908152604090205481565b348015610466575f80fd5b505f546001600160a01b031661026e565b348015610482575f80fd5b5061029b60175481565b348015610497575f80fd5b50604080518082019091526002815261544360f01b602082015261020a565b3480156104c1575f80fd5b506102c86104d0366004611acc565b610909565b3480156104e0575f80fd5b5061023f6104ef36600461191e565b610937565b3480156104ff575f80fd5b5061023f61050e366004611948565b60106020525f908152604090205460ff1681565b34801561052d575f80fd5b506102c861053c366004611ae3565b610943565b34801561054c575f80fd5b5061029b61055b366004611b60565b6001600160a01b039182165f90815260046020908152604080832093909416825291909152205490565b348015610590575f80fd5b506102c861059f366004611acc565b6109e0565b3480156105af575f80fd5b506102c86105be366004611acc565b610a0e565b3480156105ce575f80fd5b506102c86105dd366004611948565b610a3c565b3480156105ed575f80fd5b506102c8610b23565b5f610602338484610b6a565b5060015b92915050565b5f546001600160a01b0316331461063e5760405162461bcd60e51b815260040161063590611b97565b60405180910390fd5b6001600160a01b03165f908152601060205260409020805460ff19169055565b5f546001600160a01b031633146106875760405162461bcd60e51b815260040161063590611b97565b600893909355600a91909155600955600b55565b5f546001600160a01b031633146106c45760405162461bcd60e51b815260040161063590611b97565b5f5b815181101561072957600160105f8484815181106106e6576106e6611bcc565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff19169115159190911790558061072181611bf4565b9150506106c6565b5050565b5f610739848484610c8d565b61078a843361078585604051806060016040528060288152602001611cf3602891396001600160a01b038a165f90815260046020908152604080832033845290915290205491906111bd565b610b6a565b5060019392505050565b5f546001600160a01b031633146107bd5760405162461bcd60e51b815260040161063590611b97565b60158054911515600160a01b0260ff60a01b19909216919091179055565b6012546001600160a01b0316336001600160a01b0316148061081057506013546001600160a01b0316336001600160a01b0316145b610818575f80fd5b5f61082230610877565b905061082d816111f5565b50565b5f546001600160a01b031633146108595760405162461bcd60e51b815260040161063590611b97565b60158054911515600160b01b0260ff60b01b19909216919091179055565b6001600160a01b0381165f9081526002602052604081205461060690611365565b5f546001600160a01b031633146108c15760405162461bcd60e51b815260040161063590611b97565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146109325760405162461bcd60e51b815260040161063590611b97565b601855565b5f610602338484610c8d565b5f546001600160a01b0316331461096c5760405162461bcd60e51b815260040161063590611b97565b5f5b828110156109da578160055f86868581811061098c5761098c611bcc565b90506020020160208101906109a19190611948565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055806109d281611bf4565b91505061096e565b50505050565b5f546001600160a01b03163314610a095760405162461bcd60e51b815260040161063590611b97565b601755565b5f546001600160a01b03163314610a375760405162461bcd60e51b815260040161063590611b97565b601655565b5f546001600160a01b03163314610a655760405162461bcd60e51b815260040161063590611b97565b6001600160a01b038116610aca5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610635565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6012546001600160a01b0316336001600160a01b03161480610b5857506013546001600160a01b0316336001600160a01b0316145b610b60575f80fd5b4761082d816113e7565b6001600160a01b038316610bcc5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610635565b6001600160a01b038216610c2d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610635565b6001600160a01b038381165f8181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610cf15760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610635565b6001600160a01b038216610d535760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610635565b5f8111610db45760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610635565b5f546001600160a01b03848116911614801590610dde57505f546001600160a01b03838116911614155b156110b957601554600160a01b900460ff16610e76575f546001600160a01b03848116911614610e765760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c6564006064820152608401610635565b601654811115610ec85760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000006044820152606401610635565b6001600160a01b0383165f9081526010602052604090205460ff16158015610f0857506001600160a01b0382165f9081526010602052604090205460ff16155b610f605760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460448201526265642160e81b6064820152608401610635565b6015546001600160a01b03838116911614610fe55760175481610f8284610877565b610f8c9190611c0c565b10610fe55760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b6064820152608401610635565b5f610fef30610877565b6018546016549192508210159082106110085760165491505b80801561101f5750601554600160a81b900460ff16155b801561103957506015546001600160a01b03868116911614155b801561104e5750601554600160b01b900460ff165b801561107257506001600160a01b0385165f9081526005602052604090205460ff16155b801561109657506001600160a01b0384165f9081526005602052604090205460ff16155b156110b6576110a4826111f5565b4780156110b4576110b4476113e7565b505b50505b6001600160a01b0383165f9081526005602052604090205460019060ff16806110f957506001600160a01b0383165f9081526005602052604090205460ff165b8061112b57506015546001600160a01b0385811691161480159061112b57506015546001600160a01b03848116911614155b1561113757505f6111b1565b6015546001600160a01b03858116911614801561116257506014546001600160a01b03848116911614155b1561117457600854600c55600954600d555b6015546001600160a01b03848116911614801561119f57506014546001600160a01b03858116911614155b156111b157600a54600c55600b54600d555b6109da8484848461141e565b5f81848411156111e05760405162461bcd60e51b815260040161063591906118af565b505f6111ec8486611c1f565b95945050505050565b6015805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f8151811061123b5761123b611bcc565b6001600160a01b03928316602091820292909201810191909152601454604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611292573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112b69190611c32565b816001815181106112c9576112c9611bcc565b6001600160a01b0392831660209182029290920101526014546112ef9130911684610b6a565b60145460405163791ac94760e01b81526001600160a01b039091169063791ac947906113279085905f90869030904290600401611c4d565b5f604051808303815f87803b15801561133e575f80fd5b505af1158015611350573d5f803e3d5ffd5b50506015805460ff60a81b1916905550505050565b5f6006548211156113cb5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610635565b5f6113d461144c565b90506113e0838261146d565b9392505050565b6013546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015610729573d5f803e3d5ffd5b8061142b5761142b6114ae565b6114368484846114db565b806109da576109da600e54600c55600f54600d55565b5f805f6114576115cc565b9092509050611466828261146d565b9250505090565b5f6113e083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611609565b600c541580156114be5750600d54155b156114c557565b600c8054600e55600d8054600f555f9182905555565b5f805f805f806114ea87611635565b6001600160a01b038f165f90815260026020526040902054959b5093995091975095509350915061151b908761168a565b6001600160a01b03808b165f9081526002602052604080822093909355908a168152205461154990866116cb565b6001600160a01b0389165f9081526002602052604090205561156a81611729565b611574848361176f565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516115b991815260200190565b60405180910390a3505050505050505050565b6006545f908190664a9b63844880006115e5828261146d565b82101561160057505060065492664a9b638448800092509050565b90939092509050565b5f81836116295760405162461bcd60e51b815260040161063591906118af565b505f6111ec8486611cbc565b5f805f805f805f805f61164d8a600c54600d54611793565b9250925092505f61165c61144c565b90505f805f61166d8e8787876117e5565b919e509c509a509598509396509194505050505091939550919395565b5f6113e083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506111bd565b5f806116d78385611c0c565b9050838110156113e05760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610635565b5f61173261144c565b90505f61173f8383611831565b305f9081526002602052604090205490915061175b90826116cb565b305f90815260026020526040902055505050565b60065461177c908361168a565b60065560075461178c90826116cb565b6007555050565b5f8080806117ac60646117a68989611831565b9061146d565b90505f6117be60646117a68a89611831565b90505f6117d5826117cf8b8661168a565b9061168a565b9992985090965090945050505050565b5f8080806117f38886611831565b90505f6118008887611831565b90505f61180d8888611831565b90505f61181e826117cf868661168a565b939b939a50919850919650505050505050565b5f825f0361184057505f610606565b5f61184b8385611cdb565b9050826118588583611cbc565b146113e05760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610635565b5f6020808352835180828501525f5b818110156118da578581018301518582016040015282016118be565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461082d575f80fd5b8035611919816118fa565b919050565b5f806040838503121561192f575f80fd5b823561193a816118fa565b946020939093013593505050565b5f60208284031215611958575f80fd5b81356113e0816118fa565b5f805f8060808587031215611976575f80fd5b5050823594602084013594506040840135936060013592509050565b634e487b7160e01b5f52604160045260245ffd5b5f60208083850312156119b7575f80fd5b823567ffffffffffffffff808211156119ce575f80fd5b818501915085601f8301126119e1575f80fd5b8135818111156119f3576119f3611992565b8060051b604051601f19603f83011681018181108582111715611a1857611a18611992565b604052918252848201925083810185019188831115611a35575f80fd5b938501935b82851015611a5a57611a4b8561190e565b84529385019392850192611a3a565b98975050505050505050565b5f805f60608486031215611a78575f80fd5b8335611a83816118fa565b92506020840135611a93816118fa565b929592945050506040919091013590565b80358015158114611919575f80fd5b5f60208284031215611ac3575f80fd5b6113e082611aa4565b5f60208284031215611adc575f80fd5b5035919050565b5f805f60408486031215611af5575f80fd5b833567ffffffffffffffff80821115611b0c575f80fd5b818601915086601f830112611b1f575f80fd5b813581811115611b2d575f80fd5b8760208260051b8501011115611b41575f80fd5b602092830195509350611b579186019050611aa4565b90509250925092565b5f8060408385031215611b71575f80fd5b8235611b7c816118fa565b91506020830135611b8c816118fa565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f60018201611c0557611c05611be0565b5060010190565b8082018082111561060657610606611be0565b8181038181111561060657610606611be0565b5f60208284031215611c42575f80fd5b81516113e0816118fa565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015611c9b5784516001600160a01b031683529383019391830191600101611c76565b50506001600160a01b03969096166060850152505050608001529392505050565b5f82611cd657634e487b7160e01b5f52601260045260245ffd5b500490565b808202811582820484141761060657610606611be056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212209cfc89b01d1353a0921e35debd4a366fa3e77971b350d179cd585631cb075e7c64736f6c63430008140033
Deployed Bytecode Sourcemap
4128:13620:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6679:83;;;;;;;;;;-1:-1:-1;6749:5:0;;;;;;;;;;;;-1:-1:-1;;;6749:5:0;;;;6679:83;;;;;;;:::i;:::-;;;;;;;;7604:193;;;;;;;;;;-1:-1:-1;7604:193:0;;;;;:::i;:::-;;:::i;:::-;;;1327:14:1;;1320:22;1302:41;;1290:2;1275:18;7604:193:0;1162:187:1;5504:41:0;;;;;;;;;;-1:-1:-1;5504:41:0;;;;-1:-1:-1;;;;;5504:41:0;;;;;;-1:-1:-1;;;;;1544:32:1;;;1526:51;;1514:2;1499:18;5504:41:0;1354:229:1;6956:95:0;;;;;;;;;;-1:-1:-1;4690:16:0;6956:95;;;1734:25:1;;;1722:2;1707:18;6956:95:0;1588:177:1;13043:93:0;;;;;;;;;;-1:-1:-1;13043:93:0;;;;;:::i;:::-;;:::i;:::-;;16555:333;;;;;;;;;;-1:-1:-1;16555:333:0;;;;;:::i;:::-;;:::i;12873:162::-;;;;;;;;;;-1:-1:-1;12873:162:0;;;;;:::i;:::-;;:::i;7805:446::-;;;;;;;;;;-1:-1:-1;7805:446:0;;;;;:::i;:::-;;:::i;12304:102::-;;;;;;;;;;-1:-1:-1;12304:102:0;;;;;:::i;:::-;;:::i;5840:49::-;;;;;;;;;;;;;;;;6865:83;;;;;;;;;;-1:-1:-1;6865:83:0;;4356:1;4623:36:1;;4611:2;4596:18;6865:83:0;4481:184:1;5552:28:0;;;;;;;;;;-1:-1:-1;5552:28:0;;;;-1:-1:-1;;;;;5552:28:0;;;12414:222;;;;;;;;;;;;;:::i;5696:29::-;;;;;;;;;;-1:-1:-1;5696:29:0;;;;-1:-1:-1;;;5696:29:0;;;;;;17131:101;;;;;;;;;;-1:-1:-1;17131:101:0;;;;;:::i;:::-;;:::i;7059:138::-;;;;;;;;;;-1:-1:-1;7059:138:0;;;;;:::i;:::-;;:::i;1615:148::-;;;;;;;;;;;;;:::i;5736:44::-;;;;;;;;;;;;;;;;5260:43;;;;;;;;;;-1:-1:-1;5260:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;1401:79;;;;;;;;;;-1:-1:-1;1439:7:0;1466:6;-1:-1:-1;;;;;1466:6:0;1401:79;;5787:46;;;;;;;;;;;;;;;;6770:87;;;;;;;;;;-1:-1:-1;6842:7:0;;;;;;;;;;;;-1:-1:-1;;;6842:7:0;;;;6770:87;;16940:139;;;;;;;;;;-1:-1:-1;16940:139:0;;;;;:::i;:::-;;:::i;7205:199::-;;;;;;;;;;-1:-1:-1;7205:199:0;;;;;:::i;:::-;;:::i;5222:36::-;;;;;;;;;;-1:-1:-1;5222:36:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;17509:234;;;;;;;;;;-1:-1:-1;17509:234:0;;;;;:::i;:::-;;:::i;7412:184::-;;;;;;;;;;-1:-1:-1;7412:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;7561:18:0;;;7529:7;7561:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7412:184;17386:115;;;;;;;;;;-1:-1:-1;17386:115:0;;;;;:::i;:::-;;:::i;17271:107::-;;;;;;;;;;-1:-1:-1;17271:107:0;;;;;:::i;:::-;;:::i;1771:244::-;;;;;;;;;;-1:-1:-1;1771:244:0;;;;;:::i;:::-;;:::i;12644:221::-;;;;;;;;;;;;;:::i;7604:193::-;7706:4;7728:39;240:10;7751:7;7760:6;7728:8;:39::i;:::-;-1:-1:-1;7785:4:0;7604:193;;;;;:::o;13043:93::-;1528:6;;-1:-1:-1;;;;;1528:6:0;240:10;1528:22;1520:67;;;;-1:-1:-1;;;1520:67:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;13108:12:0::1;13123:5;13108:12:::0;;;:4:::1;:12;::::0;;;;:20;;-1:-1:-1;;13108:20:0::1;::::0;;13043:93::o;16555:333::-;1528:6;;-1:-1:-1;;;;;1528:6:0;240:10;1528:22;1520:67;;;;-1:-1:-1;;;1520:67:0;;;;;;;:::i;:::-;16707:14:::1;:30:::0;;;;16748:15:::1;:32:::0;;;;16791:18:::1;:38:::0;16840:19:::1;:40:::0;16555:333::o;12873:162::-;1528:6;;-1:-1:-1;;;;;1528:6:0;240:10;1528:22;1520:67;;;;-1:-1:-1;;;1520:67:0;;;;;;;:::i;:::-;12942:9:::1;12937:91;12961:5;:12;12957:1;:16;12937:91;;;13012:4;12995;:14;13000:5;13006:1;13000:8;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;12995:14:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;12995:14:0;:21;;-1:-1:-1;;12995:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;12975:3;::::1;::::0;::::1;:::i;:::-;;;;12937:91;;;;12873:162:::0;:::o;7805:446::-;7937:4;7954:36;7964:6;7972:9;7983:6;7954:9;:36::i;:::-;8001:220;8024:6;240:10;8072:138;8128:6;8072:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8072:19:0;;;;;;:11;:19;;;;;;;;240:10;8072:33;;;;;;;;;;:37;:138::i;:::-;8001:8;:220::i;:::-;-1:-1:-1;8239:4:0;7805:446;;;;;:::o;12304:102::-;1528:6;;-1:-1:-1;;;;;1528:6:0;240:10;1528:22;1520:67;;;;-1:-1:-1;;;1520:67:0;;;;;;;:::i;:::-;12372:11:::1;:26:::0;;;::::1;;-1:-1:-1::0;;;12372:26:0::1;-1:-1:-1::0;;;;12372:26:0;;::::1;::::0;;;::::1;::::0;;12304:102::o;12414:222::-;12480:11;;-1:-1:-1;;;;;12480:11:0;240:10;-1:-1:-1;;;;;12464:27:0;;:58;;;-1:-1:-1;12511:11:0;;-1:-1:-1;;;;;12511:11:0;240:10;-1:-1:-1;;;;;12495:27:0;;12464:58;12456:67;;;;;;12534:23;12560:24;12578:4;12560:9;:24::i;:::-;12534:50;;12595:33;12612:15;12595:16;:33::i;:::-;12445:191;12414:222::o;17131:101::-;1528:6;;-1:-1:-1;;;;;1528:6:0;240:10;1528:22;1520:67;;;;-1:-1:-1;;;1520:67:0;;;;;;;:::i;:::-;17198:11:::1;:26:::0;;;::::1;;-1:-1:-1::0;;;17198:26:0::1;-1:-1:-1::0;;;;17198:26:0;;::::1;::::0;;;::::1;::::0;;17131:101::o;7059:138::-;-1:-1:-1;;;;;7172:16:0;;7125:7;7172:16;;;:7;:16;;;;;;7152:37;;:19;:37::i;1615:148::-;1528:6;;-1:-1:-1;;;;;1528:6:0;240:10;1528:22;1520:67;;;;-1:-1:-1;;;1520:67:0;;;;;;;:::i;:::-;1722:1:::1;1706:6:::0;;1685:40:::1;::::0;-1:-1:-1;;;;;1706:6:0;;::::1;::::0;1685:40:::1;::::0;1722:1;;1685:40:::1;1753:1;1736:19:::0;;-1:-1:-1;;;;;;1736:19:0::1;::::0;;1615:148::o;16940:139::-;1528:6;;-1:-1:-1;;;;;1528:6:0;240:10;1528:22;1520:67;;;;-1:-1:-1;;;1520:67:0;;;;;;;:::i;:::-;17031:19:::1;:40:::0;16940:139::o;7205:199::-;7310:4;7332:42;240:10;7356:9;7367:6;7332:9;:42::i;17509:234::-;1528:6;;-1:-1:-1;;;;;1528:6:0;240:10;1528:22;1520:67;;;;-1:-1:-1;;;1520:67:0;;;;;;;:::i;:::-;17626:9:::1;17622:114;17641:19:::0;;::::1;17622:114;;;17716:8;17682:18;:31;17701:8;;17710:1;17701:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;17682:31:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;17682:31:0;:42;;-1:-1:-1;;17682:42:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17662:3;::::1;::::0;::::1;:::i;:::-;;;;17622:114;;;;17509:234:::0;;;:::o;17386:115::-;1528:6;;-1:-1:-1;;;;;1528:6:0;240:10;1528:22;1520:67;;;;-1:-1:-1;;;1520:67:0;;;;;;;:::i;:::-;17463:14:::1;:30:::0;17386:115::o;17271:107::-;1528:6;;-1:-1:-1;;;;;1528:6:0;240:10;1528:22;1520:67;;;;-1:-1:-1;;;1520:67:0;;;;;;;:::i;:::-;17344:12:::1;:26:::0;17271:107::o;1771:244::-;1528:6;;-1:-1:-1;;;;;1528:6:0;240:10;1528:22;1520:67;;;;-1:-1:-1;;;1520:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1860:22:0;::::1;1852:73;;;::::0;-1:-1:-1;;;1852:73:0;;7117:2:1;1852:73:0::1;::::0;::::1;7099:21:1::0;7156:2;7136:18;;;7129:30;7195:34;7175:18;;;7168:62;-1:-1:-1;;;7246:18:1;;;7239:36;7292:19;;1852:73:0::1;6915:402:1::0;1852:73:0::1;1962:6;::::0;;1941:38:::1;::::0;-1:-1:-1;;;;;1941:38:0;;::::1;::::0;1962:6;::::1;::::0;1941:38:::1;::::0;::::1;1990:6;:17:::0;;-1:-1:-1;;;;;;1990:17:0::1;-1:-1:-1::0;;;;;1990:17:0;;;::::1;::::0;;;::::1;::::0;;1771:244::o;12644:221::-;12710:11;;-1:-1:-1;;;;;12710:11:0;240:10;-1:-1:-1;;;;;12694:27:0;;:58;;;-1:-1:-1;12741:11:0;;-1:-1:-1;;;;;12741:11:0;240:10;-1:-1:-1;;;;;12725:27:0;;12694:58;12686:67;;;;;;12793:21;12825:32;12793:21;12825:12;:32::i;8973:369::-;-1:-1:-1;;;;;9100:19:0;;9092:68;;;;-1:-1:-1;;;9092:68:0;;7524:2:1;9092:68:0;;;7506:21:1;7563:2;7543:18;;;7536:30;7602:34;7582:18;;;7575:62;-1:-1:-1;;;7653:18:1;;;7646:34;7697:19;;9092:68:0;7322:400:1;9092:68:0;-1:-1:-1;;;;;9179:21:0;;9171:68;;;;-1:-1:-1;;;9171:68:0;;7929:2:1;9171:68:0;;;7911:21:1;7968:2;7948:18;;;7941:30;8007:34;7987:18;;;7980:62;-1:-1:-1;;;8058:18:1;;;8051:32;8100:19;;9171:68:0;7727:398:1;9171:68:0;-1:-1:-1;;;;;9250:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9302:32;;1734:25:1;;;9302:32:0;;1707:18:1;9302:32:0;;;;;;;8973:369;;;:::o;9350:2354::-;-1:-1:-1;;;;;9472:18:0;;9464:68;;;;-1:-1:-1;;;9464:68:0;;8332:2:1;9464:68:0;;;8314:21:1;8371:2;8351:18;;;8344:30;8410:34;8390:18;;;8383:62;-1:-1:-1;;;8461:18:1;;;8454:35;8506:19;;9464:68:0;8130:401:1;9464:68:0;-1:-1:-1;;;;;9551:16:0;;9543:64;;;;-1:-1:-1;;;9543:64:0;;8738:2:1;9543:64:0;;;8720:21:1;8777:2;8757:18;;;8750:30;8816:34;8796:18;;;8789:62;-1:-1:-1;;;8867:18:1;;;8860:33;8910:19;;9543:64:0;8536:399:1;9543:64:0;9635:1;9626:6;:10;9618:64;;;;-1:-1:-1;;;9618:64:0;;9142:2:1;9618:64:0;;;9124:21:1;9181:2;9161:18;;;9154:30;9220:34;9200:18;;;9193:62;-1:-1:-1;;;9271:18:1;;;9264:39;9320:19;;9618:64:0;8940:405:1;9618:64:0;1439:7;1466:6;-1:-1:-1;;;;;9699:15:0;;;1466:6;;9699:15;;;;:32;;-1:-1:-1;1439:7:0;1466:6;-1:-1:-1;;;;;9718:13:0;;;1466:6;;9718:13;;9699:32;9695:1259;;;9788:11;;-1:-1:-1;;;9788:11:0;;;;9783:144;;1439:7;1466:6;-1:-1:-1;;;;;9828:15:0;;;1466:6;;9828:15;9820:91;;;;-1:-1:-1;;;9820:91:0;;9552:2:1;9820:91:0;;;9534:21:1;9591:2;9571:18;;;9564:30;9630:34;9610:18;;;9603:62;9701:33;9681:18;;;9674:61;9752:19;;9820:91:0;9350:427:1;9820:91:0;9961:12;;9951:6;:22;;9943:63;;;;-1:-1:-1;;;9943:63:0;;9984:2:1;9943:63:0;;;9966:21:1;10023:2;10003:18;;;9996:30;10062;10042:18;;;10035:58;10110:18;;9943:63:0;9782:352:1;9943:63:0;-1:-1:-1;;;;;10030:10:0;;;;;;:4;:10;;;;;;;;10029:11;:24;;;;-1:-1:-1;;;;;;10045:8:0;;;;;;:4;:8;;;;;;;;10044:9;10029:24;10021:72;;;;-1:-1:-1;;;10021:72:0;;10341:2:1;10021:72:0;;;10323:21:1;10380:2;10360:18;;;10353:30;10419:34;10399:18;;;10392:62;-1:-1:-1;;;10470:18:1;;;10463:33;10513:19;;10021:72:0;10139:399:1;10021:72:0;10119:13;;-1:-1:-1;;;;;10113:19:0;;;10119:13;;10113:19;10110:146;;10186:14;;10177:6;10161:13;10171:2;10161:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10153:87;;;;-1:-1:-1;;;10153:87:0;;10875:2:1;10153:87:0;;;10857:21:1;10914:2;10894:18;;;10887:30;10953:34;10933:18;;;10926:62;-1:-1:-1;;;11004:18:1;;;10997:33;11047:19;;10153:87:0;10673:399:1;10153:87:0;10272:28;10303:24;10321:4;10303:9;:24::i;:::-;10381:19;;10444:12;;10272:55;;-1:-1:-1;10357:43:0;;;;10420:36;;10417:124;;10513:12;;10490:35;;10417:124;10561:7;:18;;;;-1:-1:-1;10573:6:0;;-1:-1:-1;;;10573:6:0;;;;10572:7;10561:18;:43;;;;-1:-1:-1;10591:13:0;;-1:-1:-1;;;;;10583:21:0;;;10591:13;;10583:21;;10561:43;:58;;;;-1:-1:-1;10608:11:0;;-1:-1:-1;;;10608:11:0;;;;10561:58;:87;;;;-1:-1:-1;;;;;;10624:24:0;;;;;;:18;:24;;;;;;;;10623:25;10561:87;:114;;;;-1:-1:-1;;;;;;10653:22:0;;;;;;:18;:22;;;;;;;;10652:23;10561:114;10557:386;;;10696:38;10713:20;10696:16;:38::i;:::-;10782:21;10826:22;;10822:106;;10873:35;10886:21;10873:12;:35::i;:::-;10677:266;10557:386;9733:1221;;9695:1259;-1:-1:-1;;;;;11030:24:0;;10966:12;11030:24;;;:18;:24;;;;;;10981:4;;11030:24;;;:50;;-1:-1:-1;;;;;;11058:22:0;;;;;;:18;:22;;;;;;;;11030:50;11029:102;;;-1:-1:-1;11094:13:0;;-1:-1:-1;;;;;11086:21:0;;;11094:13;;11086:21;;;;:44;;-1:-1:-1;11117:13:0;;-1:-1:-1;;;;;11111:19:0;;;11117:13;;11111:19;;11086:44;11025:618;;;-1:-1:-1;11158:5:0;11025:618;;;11241:13;;-1:-1:-1;;;;;11233:21:0;;;11241:13;;11233:21;:55;;;;-1:-1:-1;11272:15:0;;-1:-1:-1;;;;;11258:30:0;;;11272:15;;11258:30;;11233:55;11230:174;;;11321:14;;11309:9;:26;11370:18;;11354:13;:34;11230:174;11463:13;;-1:-1:-1;;;;;11457:19:0;;;11463:13;;11457:19;:55;;;;-1:-1:-1;11496:15:0;;-1:-1:-1;;;;;11480:32:0;;;11496:15;;11480:32;;11457:55;11453:177;;;11545:15;;11533:9;:27;11595:19;;11579:13;:35;11453:177;11655:41;11670:4;11676:2;11680:6;11688:7;11655:14;:41::i;2379:224::-;2499:7;2535:12;2527:6;;;;2519:29;;;;-1:-1:-1;;;2519:29:0;;;;;;;;:::i;:::-;-1:-1:-1;2559:9:0;2571:5;2575:1;2571;:5;:::i;:::-;2559:17;2379:224;-1:-1:-1;;;;;2379:224:0:o;11712:483::-;5983:6;:13;;-1:-1:-1;;;;5983:13:0;-1:-1:-1;;;5983:13:0;;;11814:16:::1;::::0;;11828:1:::1;11814:16:::0;;;;;::::1;::::0;;-1:-1:-1;;11814:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;11814:16:0::1;11790:40;;11859:4;11841;11846:1;11841:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11841:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;11885:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;11885:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;11841:7;;11885:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11875:4;11880:1;11875:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11875:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;11950:15:::1;::::0;11918:62:::1;::::0;11935:4:::1;::::0;11950:15:::1;11968:11:::0;11918:8:::1;:62::i;:::-;11991:15;::::0;:196:::1;::::0;-1:-1:-1;;;11991:196:0;;-1:-1:-1;;;;;11991:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;12072:11;;11991:15:::1;::::0;12114:4;;12141::::1;::::0;12161:15:::1;::::0;11991:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;6019:6:0;:14;;-1:-1:-1;;;;6019:14:0;;;-1:-1:-1;;;;11712:483:0:o;8259:323::-;8354:7;8412;;8401;:18;;8379:110;;;;-1:-1:-1;;;8379:110:0;;12653:2:1;8379:110:0;;;12635:21:1;12692:2;12672:18;;;12665:30;12731:34;12711:18;;;12704:62;-1:-1:-1;;;12782:18:1;;;12775:40;12832:19;;8379:110:0;12451:406:1;8379:110:0;8500:19;8522:10;:8;:10::i;:::-;8500:32;-1:-1:-1;8550:24:0;:7;8500:32;8550:11;:24::i;:::-;8543:31;8259:323;-1:-1:-1;;;8259:323:0:o;12203:93::-;12260:11;;:28;;-1:-1:-1;;;;;12260:11:0;;;;:28;;;;;12281:6;;12260:11;:28;:11;:28;12281:6;12260:11;:28;;;;;;;;;;;;;;;;;;;13144:277;13300:7;13295:28;;13309:14;:12;:14::i;:::-;13334:44;13352:6;13360:9;13371:6;13334:17;:44::i;:::-;13394:7;13389:24;;13403:10;8892:17;;8880:9;:29;8936:21;;8920:13;:37;8841:124;16118:164;16160:7;16181:15;16198;16217:19;:17;:19::i;:::-;16180:56;;-1:-1:-1;16180:56:0;-1:-1:-1;16254:20:0;16180:56;;16254:11;:20::i;:::-;16247:27;;;;16118:164;:::o;2865:132::-;2923:7;2950:39;2954:1;2957;2950:39;;;;;;;;;;;;;;;;;:3;:39::i;8590:243::-;8637:9;;:14;:36;;;;-1:-1:-1;8655:13:0;;:18;8637:36;8633:49;;;8590:243::o;8633:49::-;8714:9;;;8694:17;:29;8758:13;;;8734:21;:37;-1:-1:-1;8784:13:0;;;;8808:17;8590:243::o;13429:610::-;13576:15;13606:23;13644:12;13671:23;13709:12;13736:13;13763:19;13774:7;13763:10;:19::i;:::-;-1:-1:-1;;;;;13811:15:0;;;;;;:7;:15;;;;;;13561:221;;-1:-1:-1;13561:221:0;;-1:-1:-1;13561:221:0;;-1:-1:-1;13561:221:0;-1:-1:-1;13561:221:0;-1:-1:-1;13561:221:0;-1:-1:-1;13811:28:0;;13561:221;13811:19;:28::i;:::-;-1:-1:-1;;;;;13793:15:0;;;;;;;:7;:15;;;;;;:46;;;;13871:18;;;;;;;:39;;13894:15;13871:22;:39::i;:::-;-1:-1:-1;;;;;13850:18:0;;;;;;:7;:18;;;;;:60;13921:16;13931:5;13921:9;:16::i;:::-;13948:23;13960:4;13966;13948:11;:23::i;:::-;14004:9;-1:-1:-1;;;;;13987:44:0;13996:6;-1:-1:-1;;;;;13987:44:0;;14015:15;13987:44;;;;1734:25:1;;1722:2;1707:18;;1588:177;13987:44:0;;;;;;;;13550:489;;;;;;13429:610;;;:::o;16290:257::-;16388:7;;16341;;;;4690:16;16456:20;16388:7;4690:16;16456:11;:20::i;:::-;16446:7;:30;16442:61;;;-1:-1:-1;;16486:7:0;;;4690:16;;-1:-1:-1;16290:257:0;-1:-1:-1;16290:257:0:o;16442:61::-;16522:7;;16531;;-1:-1:-1;16290:257:0;-1:-1:-1;16290:257:0:o;3005:223::-;3125:7;3160:12;3153:5;3145:28;;;;-1:-1:-1;;;3145:28:0;;;;;;;;:::i;:::-;-1:-1:-1;3184:9:0;3196:5;3200:1;3196;:5;:::i;14458:621::-;14558:7;14580;14602;14624;14646;14668;14704:23;14729:12;14743:13;14773:46;14785:7;14794:9;;14805:13;;14773:11;:46::i;:::-;14703:116;;;;;;14830:19;14852:10;:8;:10::i;:::-;14830:32;;14874:15;14891:23;14916:12;14945:46;14957:7;14966:4;14972:5;14979:11;14945;:46::i;:::-;14873:118;;-1:-1:-1;14873:118:0;-1:-1:-1;14873:118:0;-1:-1:-1;15042:15:0;;-1:-1:-1;15059:4:0;;-1:-1:-1;15065:5:0;;-1:-1:-1;;;;;14458:621:0;;;;;;;:::o;2235:136::-;2293:7;2320:43;2324:1;2327;2320:43;;;;;;;;;;;;;;;;;:3;:43::i;2048:179::-;2106:7;;2138:5;2142:1;2138;:5;:::i;:::-;2126:17;;2167:1;2162;:6;;2154:46;;;;-1:-1:-1;;;2154:46:0;;13286:2:1;2154:46:0;;;13268:21:1;13325:2;13305:18;;;13298:30;13364:29;13344:18;;;13337:57;13411:18;;2154:46:0;13084:351:1;14047:211:0;14100:19;14122:10;:8;:10::i;:::-;14100:32;-1:-1:-1;14143:13:0;14159:22;:5;14100:32;14159:9;:22::i;:::-;14233:4;14217:22;;;;:7;:22;;;;;;14143:38;;-1:-1:-1;14217:33:0;;14143:38;14217:26;:33::i;:::-;14208:4;14192:22;;;;:7;:22;;;;;:58;-1:-1:-1;;;14047:211:0:o;14266:147::-;14344:7;;:17;;14356:4;14344:11;:17::i;:::-;14334:7;:27;14385:10;;:20;;14400:4;14385:14;:20::i;:::-;14372:10;:33;-1:-1:-1;;14266:147:0:o;15087:481::-;15262:7;;;;15356:30;15382:3;15356:21;:7;15368:8;15356:11;:21::i;:::-;:25;;:30::i;:::-;15341:45;-1:-1:-1;15397:13:0;15413:34;15443:3;15413:25;:7;15425:12;15413:11;:25::i;:34::-;15397:50;-1:-1:-1;15458:23:0;15484:28;15397:50;15484:17;:7;15496:4;15484:11;:17::i;:::-;:21;;:28::i;:::-;15458:54;15548:4;;-1:-1:-1;15554:5:0;;-1:-1:-1;15087:481:0;;-1:-1:-1;;;;;15087:481:0:o;15576:534::-;15770:7;;;;15867:24;:7;15879:11;15867;:24::i;:::-;15849:42;-1:-1:-1;15902:12:0;15917:21;:4;15926:11;15917:8;:21::i;:::-;15902:36;-1:-1:-1;15949:13:0;15965:22;:5;15975:11;15965:9;:22::i;:::-;15949:38;-1:-1:-1;15998:23:0;16024:28;15949:38;16024:17;:7;16036:4;16024:11;:17::i;:28::-;16071:7;;;;-1:-1:-1;16097:4:0;;-1:-1:-1;15576:534:0;;-1:-1:-1;;;;;;;15576:534:0:o;2611:246::-;2669:7;2693:1;2698;2693:6;2689:47;;-1:-1:-1;2723:1:0;2716:8;;2689:47;2746:9;2758:5;2762:1;2758;:5;:::i;:::-;2746:17;-1:-1:-1;2791:1:0;2782:5;2786:1;2746:17;2782:5;:::i;:::-;:10;2774:56;;;;-1:-1:-1;;;2774:56:0;;13815:2:1;2774:56:0;;;13797:21:1;13854:2;13834:18;;;13827:30;13893:34;13873:18;;;13866:62;-1:-1:-1;;;13944:18:1;;;13937:31;13985:19;;2774:56:0;13613:397:1;14:548;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:134;771:20;;800:31;771:20;800:31;:::i;:::-;703:134;;;:::o;842:315::-;910:6;918;971:2;959:9;950:7;946:23;942:32;939:52;;;987:1;984;977:12;939:52;1026:9;1013:23;1045:31;1070:5;1045:31;:::i;:::-;1095:5;1147:2;1132:18;;;;1119:32;;-1:-1:-1;;;842:315:1:o;1770:247::-;1829:6;1882:2;1870:9;1861:7;1857:23;1853:32;1850:52;;;1898:1;1895;1888:12;1850:52;1937:9;1924:23;1956:31;1981:5;1956:31;:::i;2022:385::-;2108:6;2116;2124;2132;2185:3;2173:9;2164:7;2160:23;2156:33;2153:53;;;2202:1;2199;2192:12;2153:53;-1:-1:-1;;2225:23:1;;;2295:2;2280:18;;2267:32;;-1:-1:-1;2346:2:1;2331:18;;2318:32;;2397:2;2382:18;2369:32;;-1:-1:-1;2022:385:1;-1:-1:-1;2022:385:1:o;2412:127::-;2473:10;2468:3;2464:20;2461:1;2454:31;2504:4;2501:1;2494:15;2528:4;2525:1;2518:15;2544:1121;2628:6;2659:2;2702;2690:9;2681:7;2677:23;2673:32;2670:52;;;2718:1;2715;2708:12;2670:52;2758:9;2745:23;2787:18;2828:2;2820:6;2817:14;2814:34;;;2844:1;2841;2834:12;2814:34;2882:6;2871:9;2867:22;2857:32;;2927:7;2920:4;2916:2;2912:13;2908:27;2898:55;;2949:1;2946;2939:12;2898:55;2985:2;2972:16;3007:2;3003;3000:10;2997:36;;;3013:18;;:::i;:::-;3059:2;3056:1;3052:10;3091:2;3085:9;3154:2;3150:7;3145:2;3141;3137:11;3133:25;3125:6;3121:38;3209:6;3197:10;3194:22;3189:2;3177:10;3174:18;3171:46;3168:72;;;3220:18;;:::i;:::-;3256:2;3249:22;3306:18;;;3340:15;;;;-1:-1:-1;3382:11:1;;;3378:20;;;3410:19;;;3407:39;;;3442:1;3439;3432:12;3407:39;3466:11;;;;3486:148;3502:6;3497:3;3494:15;3486:148;;;3568:23;3587:3;3568:23;:::i;:::-;3556:36;;3519:12;;;;3612;;;;3486:148;;;3653:6;2544:1121;-1:-1:-1;;;;;;;;2544:1121:1:o;3670:456::-;3747:6;3755;3763;3816:2;3804:9;3795:7;3791:23;3787:32;3784:52;;;3832:1;3829;3822:12;3784:52;3871:9;3858:23;3890:31;3915:5;3890:31;:::i;:::-;3940:5;-1:-1:-1;3997:2:1;3982:18;;3969:32;4010:33;3969:32;4010:33;:::i;:::-;3670:456;;4062:7;;-1:-1:-1;;;4116:2:1;4101:18;;;;4088:32;;3670:456::o;4131:160::-;4196:20;;4252:13;;4245:21;4235:32;;4225:60;;4281:1;4278;4271:12;4296:180;4352:6;4405:2;4393:9;4384:7;4380:23;4376:32;4373:52;;;4421:1;4418;4411:12;4373:52;4444:26;4460:9;4444:26;:::i;4878:180::-;4937:6;4990:2;4978:9;4969:7;4965:23;4961:32;4958:52;;;5006:1;5003;4996:12;4958:52;-1:-1:-1;5029:23:1;;4878:180;-1:-1:-1;4878:180:1:o;5063:689::-;5155:6;5163;5171;5224:2;5212:9;5203:7;5199:23;5195:32;5192:52;;;5240:1;5237;5230:12;5192:52;5280:9;5267:23;5309:18;5350:2;5342:6;5339:14;5336:34;;;5366:1;5363;5356:12;5336:34;5404:6;5393:9;5389:22;5379:32;;5449:7;5442:4;5438:2;5434:13;5430:27;5420:55;;5471:1;5468;5461:12;5420:55;5511:2;5498:16;5537:2;5529:6;5526:14;5523:34;;;5553:1;5550;5543:12;5523:34;5608:7;5601:4;5591:6;5588:1;5584:14;5580:2;5576:23;5572:34;5569:47;5566:67;;;5629:1;5626;5619:12;5566:67;5660:4;5652:13;;;;-1:-1:-1;5684:6:1;-1:-1:-1;5709:37:1;;5725:20;;;-1:-1:-1;5709:37:1;:::i;:::-;5699:47;;5063:689;;;;;:::o;5757:388::-;5825:6;5833;5886:2;5874:9;5865:7;5861:23;5857:32;5854:52;;;5902:1;5899;5892:12;5854:52;5941:9;5928:23;5960:31;5985:5;5960:31;:::i;:::-;6010:5;-1:-1:-1;6067:2:1;6052:18;;6039:32;6080:33;6039:32;6080:33;:::i;:::-;6132:7;6122:17;;;5757:388;;;;;:::o;6150:356::-;6352:2;6334:21;;;6371:18;;;6364:30;6430:34;6425:2;6410:18;;6403:62;6497:2;6482:18;;6150:356::o;6511:127::-;6572:10;6567:3;6563:20;6560:1;6553:31;6603:4;6600:1;6593:15;6627:4;6624:1;6617:15;6643:127;6704:10;6699:3;6695:20;6692:1;6685:31;6735:4;6732:1;6725:15;6759:4;6756:1;6749:15;6775:135;6814:3;6835:17;;;6832:43;;6855:18;;:::i;:::-;-1:-1:-1;6902:1:1;6891:13;;6775:135::o;10543:125::-;10608:9;;;10629:10;;;10626:36;;;10642:18;;:::i;11077:128::-;11144:9;;;11165:11;;;11162:37;;;11179:18;;:::i;11210:251::-;11280:6;11333:2;11321:9;11312:7;11308:23;11304:32;11301:52;;;11349:1;11346;11339:12;11301:52;11381:9;11375:16;11400:31;11425:5;11400:31;:::i;11466:980::-;11728:4;11776:3;11765:9;11761:19;11807:6;11796:9;11789:25;11833:2;11871:6;11866:2;11855:9;11851:18;11844:34;11914:3;11909:2;11898:9;11894:18;11887:31;11938:6;11973;11967:13;12004:6;11996;11989:22;12042:3;12031:9;12027:19;12020:26;;12081:2;12073:6;12069:15;12055:29;;12102:1;12112:195;12126:6;12123:1;12120:13;12112:195;;;12191:13;;-1:-1:-1;;;;;12187:39:1;12175:52;;12282:15;;;;12247:12;;;;12223:1;12141:9;12112:195;;;-1:-1:-1;;;;;;;12363:32:1;;;;12358:2;12343:18;;12336:60;-1:-1:-1;;;12427:3:1;12412:19;12405:35;12324:3;11466:980;-1:-1:-1;;;11466:980:1:o;12862:217::-;12902:1;12928;12918:132;;12972:10;12967:3;12963:20;12960:1;12953:31;13007:4;13004:1;12997:15;13035:4;13032:1;13025:15;12918:132;-1:-1:-1;13064:9:1;;12862:217::o;13440:168::-;13513:9;;;13544;;13561:15;;;13555:22;;13541:37;13531:71;;13582:18;;:::i
Swarm Source
ipfs://9cfc89b01d1353a0921e35debd4a366fa3e77971b350d179cd585631cb075e7c
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.