ERC-20
Overview
Max Total Supply
100,000,000,000 REVOLUTION
Holders
16
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
0.000000425 REVOLUTIONValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
COUP
Compiler Version
v0.8.19+commit.7dd6d404
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
//SPDX-License-Identifier: MIT /* Twitter https://twitter.com/couprussiaeth Telegram https://t.me/couprussiaeth */ pragma solidity 0.8.19; interface IERC20 { function totalSupply() external view returns (uint256); function decimals() external view returns (uint8); function symbol() external view returns (string memory); function name() external view returns (string memory); 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); } interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IUniswapV2Router02 { function swapExactTokensForETHSupportingFeeOnTransferTokens(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external; function WETH() external pure returns (address); function factory() external pure returns (address); function addLiquidityETH(address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline) external payable returns (uint amountToken, uint amountETH, uint liquidity); } abstract contract Auth { address internal _owner; constructor(address creatorOwner) { _owner = creatorOwner; } modifier onlyOwner() { require(msg.sender == _owner, "Only owner can call this"); _; } function owner() public view returns (address) { return _owner; } function transferOwnership(address payable newOwner) external onlyOwner { _owner = newOwner; emit OwnershipTransferred(newOwner); } function renounceOwnership() external onlyOwner { _owner = address(0); emit OwnershipTransferred(address(0)); } event OwnershipTransferred(address _owner); } contract COUP is IERC20, Auth { uint8 private constant _decimals = 9; uint256 private constant _totalSupply = 100_000_000_000 * (10**_decimals); string private constant _name = "COUP"; string private constant _symbol = "REVOLUTION"; uint8 private antiSnipeTax1 = 15; //sniper tax for first block uint8 private antiSnipeTax2 = 10; //sniper tax for second block uint8 private antiSnipeBlocks1 = 1; uint8 private antiSnipeBlocks2 = 1; uint256 private _antiMevBlock = 2; uint8 private _initialBuyTaxRate = 0; // starting buy tax (which ultimately goes to zero) uint8 private _initialSellTaxRate = 19; // starting sell tax (which ultimatley goes to zero) uint8 private _finalBuyTaxRate = 0; uint8 private _finalSellTaxRate = 0; uint256 private txCount; uint256 _reduceTaxAt = 100; //after 100 transactions, tax will be set to zero uint16 private _taxSharesMarketing = 63; uint16 private _taxSharesDevelopment = 37; uint16 private _taxSharesLP = 0; uint16 private _totalTaxShares = _taxSharesMarketing + _taxSharesDevelopment + _taxSharesLP; address payable private _walletMarketing = payable(0x4171EeAC28c72FaD061F80d9CAD74dDEeA94f0F3); address payable private _walletDevelopment = payable(0x669582B9f0422F85e0f052ebEFC5b9466456dC71); uint256 private _launchBlock; uint256 private _maxTxAmount = _totalSupply; uint256 private _maxWalletAmount = _totalSupply; uint256 private _taxSwapMin = _totalSupply * 10 / 100000; uint256 private _taxSwapMax = _totalSupply * 888 / 100000; uint256 private _swapLimit = _taxSwapMin * 59 * 100; mapping (address => uint256) private _balances; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) private _noFees; mapping (address => bool) private _noLimits; address private _lpOwner; address private constant _swapRouterAddress = address(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); IUniswapV2Router02 private _primarySwapRouter = IUniswapV2Router02(_swapRouterAddress); address private _primaryLP; mapping (address => bool) private _isLP; bool private _tradingOpen; bool private _inTaxSwap = false; modifier lockTaxSwap { _inTaxSwap = true; _; _inTaxSwap = false; } event TokensBurned(address indexed burnedByWallet, uint256 tokenAmount); constructor() Auth(msg.sender) { _lpOwner = msg.sender; uint256 airdropFunds = (_totalSupply * 69) / 100; _balances[address(this)] = _totalSupply - airdropFunds; emit Transfer(address(0), address(this), _balances[address(this)]); _balances[_owner] = airdropFunds; emit Transfer(address(0), _owner, _balances[_owner]); _noFees[_owner] = true; _noFees[address(this)] = true; _noFees[_swapRouterAddress] = true; _noFees[_walletMarketing] = true; _noFees[_walletDevelopment] = true; _noLimits[_owner] = true; _noLimits[address(this)] = true; _noLimits[_swapRouterAddress] = true; _noLimits[_walletMarketing] = true; _noLimits[_walletDevelopment] = true; } receive() external payable {} function totalSupply() external pure override returns (uint256) { return _totalSupply; } function decimals() external pure override returns (uint8) { return _decimals; } function symbol() external pure override returns (string memory) { return _symbol; } function name() external pure override returns (string memory) { return _name; } function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _allowances[msg.sender][spender] = amount; emit Approval(msg.sender, spender, amount); return true; } function transfer(address recipient, uint256 amount) external override returns (bool) { require(_checkTradingOpen(msg.sender), "Trading not open"); return _transferFrom(msg.sender, recipient, amount); } function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) { require(_checkTradingOpen(sender), "Trading not open"); if(_allowances[sender][msg.sender] != type(uint256).max){ _allowances[sender][msg.sender] = _allowances[sender][msg.sender] - amount; } return _transferFrom(sender, recipient, amount); } function _approveRouter(uint256 _tokenAmount) internal { if ( _allowances[address(this)][_swapRouterAddress] < _tokenAmount ) { _allowances[address(this)][_swapRouterAddress] = type(uint256).max; emit Approval(address(this), _swapRouterAddress, type(uint256).max); } } function addLiquidity() external payable onlyOwner lockTaxSwap { require(_primaryLP == address(0), "LP exists"); require(!_tradingOpen, "trading is open"); require(msg.value > 0 || address(this).balance>0, "No ETH in contract or message"); require(_balances[address(this)]>0, "No tokens in contract"); _primaryLP = IUniswapV2Factory(_primarySwapRouter.factory()).createPair(address(this), _primarySwapRouter.WETH()); _addLiquidity(_balances[address(this)], address(this).balance, false); _isLP[_primaryLP] = true; _openTrading(); } function _addLiquidity(uint256 _tokenAmount, uint256 _ethAmountWei, bool autoburn) internal { address lpTokenRecipient = _lpOwner; if ( autoburn ) { lpTokenRecipient = address(0); } _approveRouter(_tokenAmount); _primarySwapRouter.addLiquidityETH{value: _ethAmountWei} ( address(this), _tokenAmount, 0, 0, lpTokenRecipient, block.timestamp ); } function _openTrading() internal { _maxTxAmount = _totalSupply * 3 / 100; _maxWalletAmount = _totalSupply * 3 / 100; _tradingOpen = true; _launchBlock = block.number; _antiMevBlock = _antiMevBlock + _launchBlock + antiSnipeBlocks1 + antiSnipeBlocks2; } function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) { require(sender != address(0), "No transfers from Zero wallet"); if (!_tradingOpen) { require(_noFees[sender] && _noLimits[sender], "Trading not open"); } if ( !_inTaxSwap && _isLP[recipient] ) { _swapTaxAndLiquify(); } if ( block.number < _antiMevBlock && block.number >= _launchBlock && _isLP[sender] ) { require(recipient == tx.origin, "MEV blocked"); } if ( sender != address(this) && recipient != address(this) && sender != _owner ) { require(_checkLimits(sender, recipient, amount), "TX exceeds limits"); } uint256 _taxAmount = _calculateTax(sender, recipient, amount); uint256 _transferAmount = amount - _taxAmount; txCount = txCount +1; _balances[sender] = _balances[sender] - amount; _swapLimit += _taxAmount; _balances[recipient] = _balances[recipient] + _transferAmount; emit Transfer(sender, recipient, _transferAmount); return true; } function _checkLimits(address sender, address recipient, uint256 transferAmount) internal view returns (bool) { bool limitCheckPassed = true; if ( _tradingOpen && !_noLimits[sender] && !_noLimits[recipient] ) { if ( transferAmount > _maxTxAmount ) { limitCheckPassed = false; } else if ( !_isLP[recipient] && (_balances[recipient] + transferAmount > _maxWalletAmount) ) { limitCheckPassed = false; } } return limitCheckPassed; } function _checkTradingOpen(address sender) private view returns (bool){ bool checkResult = false; if ( _tradingOpen ) { checkResult = true; } else if (_noFees[sender] && _noLimits[sender]) { checkResult = true; } return checkResult; } function _calculateTax(address sender, address recipient, uint256 amount) internal view returns (uint256) { uint256 taxAmount; if ( !_tradingOpen || _noFees[sender] || _noFees[recipient] ) { taxAmount = 0; } else if ( _isLP[sender] ) { if ( block.number >= _launchBlock + antiSnipeBlocks1 + antiSnipeBlocks2 ) { taxAmount = (amount * ((txCount >_reduceTaxAt)?_finalBuyTaxRate:_initialBuyTaxRate)) / 100; } else if ( block.number >= _launchBlock + antiSnipeBlocks1 ) { taxAmount = amount * antiSnipeTax2 / 100; } else if ( block.number >= _launchBlock) { taxAmount = amount * antiSnipeTax1 / 100; } } else if ( _isLP[recipient] ) { taxAmount = (amount * ((txCount >_reduceTaxAt)?_finalSellTaxRate:_initialSellTaxRate)) / 100; } return taxAmount; } function exemptFromFees(address wallet) external view returns (bool) { return _noFees[wallet]; } function exemptFromLimits(address wallet) external view returns (bool) { return _noLimits[wallet]; } function setExempt(address wallet, bool noFees, bool noLimits) external onlyOwner { if (noLimits || noFees) { require(!_isLP[wallet], "Cannot exempt LP"); } _noFees[ wallet ] = noFees; _noLimits[ wallet ] = noLimits; } function buyFee() external view returns(uint8) { return (txCount >_reduceTaxAt)?_finalBuyTaxRate:_initialBuyTaxRate; } function sellFee() external view returns(uint8) { return (txCount >_reduceTaxAt)?_finalSellTaxRate:_initialSellTaxRate; } function feeSplit() external view returns (uint16 marketing, uint16 development, uint16 LP ) { return ( _taxSharesMarketing, _taxSharesDevelopment, _taxSharesLP); } function setFees(uint8 buy, uint8 sell) external onlyOwner { require(buy + sell <= 20, "Roundtrip too high"); _initialBuyTaxRate = buy; _initialSellTaxRate = sell; } function setReduceFeeAtTx(uint256 newTxCount) external { require (msg.sender == _lpOwner,"you're not authorized"); require (newTxCount < 100, "must be less than 100 tx"); _reduceTaxAt = newTxCount; } function setFeeSplit(uint16 sharesAutoLP, uint16 sharesMarketing, uint16 sharesDevelopment) external onlyOwner { uint16 totalShares = sharesAutoLP + sharesMarketing + sharesDevelopment; require( totalShares > 0, "All cannot be 0"); _taxSharesLP = sharesAutoLP; _taxSharesMarketing = sharesMarketing; _taxSharesDevelopment = sharesDevelopment; _totalTaxShares = totalShares; } function marketingWallet() external view returns (address) { return _walletMarketing; } function developmentWallet() external view returns (address) { return _walletDevelopment; } function updateWallets(address marketing, address development, address LPtokens) external onlyOwner { require(!_isLP[marketing] && !_isLP[development] && !_isLP[LPtokens], "LP cannot be tax wallet"); _walletMarketing = payable(marketing); _walletDevelopment = payable(development); _lpOwner = LPtokens; _noFees[marketing] = true; _noLimits[marketing] = true; _noFees[development] = true; _noLimits[development] = true; } function maxWallet() external view returns (uint256) { return _maxWalletAmount; } function maxTransaction() external view returns (uint256) { return _maxTxAmount; } function swapAtMin() external view returns (uint256) { return _taxSwapMin; } function swapAtMax() external view returns (uint256) { return _taxSwapMax; } function setLimits(uint16 maxTransactionPermille, uint16 maxWalletPermille) external onlyOwner { uint256 newTxAmt = _totalSupply * maxTransactionPermille / 1000 + 1; require(newTxAmt >= _maxTxAmount, "tx too low"); _maxTxAmount = newTxAmt; uint256 newWalletAmt = _totalSupply * maxWalletPermille / 1000 + 1; require(newWalletAmt >= _maxWalletAmount, "wallet too low"); _maxWalletAmount = newWalletAmt; } function setTaxSwap(uint32 minValue, uint32 minDivider, uint32 maxValue, uint32 maxDivider) external onlyOwner { _taxSwapMin = _totalSupply * minValue / minDivider; _taxSwapMax = _totalSupply * maxValue / maxDivider; require(_taxSwapMax>=_taxSwapMin, "Min/Max error"); require(_taxSwapMax>_totalSupply / 100000, "Max too low"); require(_taxSwapMax<_totalSupply / 100, "Max too high"); } function _swapTaxAndLiquify() private lockTaxSwap { uint256 _taxTokensAvailable = _swapLimit; if ( _taxTokensAvailable >= _taxSwapMin && _tradingOpen ) { if ( _taxTokensAvailable >= _taxSwapMax ) { _taxTokensAvailable = _taxSwapMax; } uint256 _tokensForLP = _taxTokensAvailable * _taxSharesLP / _totalTaxShares / 2; uint256 _tokensToSwap = _taxTokensAvailable - _tokensForLP; if( _tokensToSwap > 10**_decimals ) { uint256 _ethPreSwap = address(this).balance; _balances[address(this)] += _taxTokensAvailable; _swapTaxTokensForEth(_tokensToSwap); _swapLimit -= _taxTokensAvailable; uint256 _ethSwapped = address(this).balance - _ethPreSwap; if ( _taxSharesLP > 0 ) { uint256 _ethWeiAmount = _ethSwapped * _taxSharesLP / _totalTaxShares ; _approveRouter(_tokensForLP); _addLiquidity(_tokensForLP, _ethWeiAmount, false); } } uint256 _contractETHBalance = address(this).balance; if(_contractETHBalance > 0) { _distributeTaxEth(_contractETHBalance); } } } function _swapTaxTokensForEth(uint256 tokenAmount) private { _approveRouter(tokenAmount); address[] memory path = new address[](2); path[0] = address(this); path[1] = _primarySwapRouter.WETH(); _primarySwapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp); } function _distributeTaxEth(uint256 amount) private { uint16 _taxShareTotal = _taxSharesMarketing + _taxSharesDevelopment; if (_taxShareTotal > 0) { uint256 marketingAmount = amount * _taxSharesMarketing / _taxShareTotal; uint256 developmentAmount = amount * _taxSharesDevelopment / _taxShareTotal; if ( marketingAmount > 0 ) { _walletMarketing.transfer(marketingAmount); } if ( developmentAmount > 0 ) { _walletDevelopment.transfer(developmentAmount); } } } function manualTaxSwapAndSend(uint8 swapTokenPercent, bool sendEth) external onlyOwner lockTaxSwap { require(swapTokenPercent <= 100, "Cannot swap more than 100%"); uint256 tokensToSwap = _balances[address(this)] * swapTokenPercent / 100; if (tokensToSwap > 10 ** _decimals) { _swapTaxTokensForEth(tokensToSwap); } if (sendEth) { uint256 ethBalance = address(this).balance; require(ethBalance > 0, "No ETH"); _distributeTaxEth(address(this).balance); } } }
{ "optimizer": { "enabled": true, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } } }
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":"address","name":"_owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"burnedByWallet","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"TokensBurned","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":[],"name":"addLiquidity","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":[],"name":"buyFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"developmentWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"exemptFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"exemptFromLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeSplit","outputs":[{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"development","type":"uint16"},{"internalType":"uint16","name":"LP","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"swapTokenPercent","type":"uint8"},{"internalType":"bool","name":"sendEth","type":"bool"}],"name":"manualTaxSwapAndSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransaction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"},{"internalType":"bool","name":"noFees","type":"bool"},{"internalType":"bool","name":"noLimits","type":"bool"}],"name":"setExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"sharesAutoLP","type":"uint16"},{"internalType":"uint16","name":"sharesMarketing","type":"uint16"},{"internalType":"uint16","name":"sharesDevelopment","type":"uint16"}],"name":"setFeeSplit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"buy","type":"uint8"},{"internalType":"uint8","name":"sell","type":"uint8"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"maxTransactionPermille","type":"uint16"},{"internalType":"uint16","name":"maxWalletPermille","type":"uint16"}],"name":"setLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newTxCount","type":"uint256"}],"name":"setReduceFeeAtTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"minValue","type":"uint32"},{"internalType":"uint32","name":"minDivider","type":"uint32"},{"internalType":"uint32","name":"maxValue","type":"uint32"},{"internalType":"uint32","name":"maxDivider","type":"uint32"}],"name":"setTaxSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAtMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAtMin","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","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 payable","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"marketing","type":"address"},{"internalType":"address","name":"development","type":"address"},{"internalType":"address","name":"LPtokens","type":"address"}],"name":"updateWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052600080546301010a0f60a01b63ffffffff60a01b1990911617905560026001819055805463ffffffff191661130017905560646004556005805465ffffffffffff19166225003f1790819055640100000000810461ffff9081169162000074916201000090910416603f62000453565b62000080919062000453565b600580547b4171eeac28c72fad061f80d9cad74ddeea94f0f30000000000000000600160401b600160e01b031961ffff9490941666010000000000000293909316600160301b600160e01b031990911617919091179055600680546001600160a01b03191673669582b9f0422f85e0f052ebefc5b9466456dc711790556200010b6009600a62000577565b6200011c9064174876e8006200058f565b6008556200012d6009600a62000577565b6200013e9064174876e8006200058f565b600955620186a06009600a62000155919062000577565b620001669064174876e8006200058f565b6200017390600a6200058f565b6200017f9190620005a9565b600a55620186a06009600a62000196919062000577565b620001a79064174876e8006200058f565b620001b5906103786200058f565b620001c19190620005a9565b600b55600a54620001d490603b6200058f565b620001e19060646200058f565b600c55601280546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d1790556015805461ff00191690553480156200022257600080fd5b5060008054336001600160a01b031991821681178355601180549092161790556064620002526009600a62000577565b620002639064174876e8006200058f565b620002709060456200058f565b6200027c9190620005a9565b9050806200028d6009600a62000577565b6200029e9064174876e8006200058f565b620002aa9190620005cc565b306000818152600d60209081526040808320859055519384529192909160008051602062002d84833981519152910160405180910390a3600080546001600160a01b039081168252600d602090815260408084208590558354909216808452828420549251928352929160008051602062002d84833981519152910160405180910390a350600080546001600160a01b039081168252600f602090815260408084208054600160ff1991821681179092553080875283872080548316841790557f7e98db1b893d503d049bbf1a3858119b9172e4b74989a91dfee4165dd9ce42a880548316841790556005805468010000000000000000908190048816895285892080548516861790556006805489168a52868a208054861687179055895489168a526010909752858920805485168617905591885284882080548416851790557feb1861b62122c39d7846b597c3c20bac261ab9032a26ee7d64c4c7f875977df880548416851790555404851686528286208054821683179055925490931684529092208054909216179055620005e2565b634e487b7160e01b600052601160045260246000fd5b61ffff8181168382160190808211156200047157620004716200043d565b5092915050565b600181815b80851115620004b95781600019048211156200049d576200049d6200043d565b80851615620004ab57918102915b93841c93908002906200047d565b509250929050565b600082620004d25750600162000571565b81620004e15750600062000571565b8160018114620004fa5760028114620005055762000525565b600191505062000571565b60ff8411156200051957620005196200043d565b50506001821b62000571565b5060208310610133831016604e8410600b84101617156200054a575081810a62000571565b62000556838362000478565b80600019048211156200056d576200056d6200043d565b0290505b92915050565b60006200058860ff841683620004c1565b9392505050565b80820281158282048414176200057157620005716200043d565b600082620005c757634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156200057157620005716200043d565b61279280620005f26000396000f3fe6080604052600436106101e75760003560e01c806370a0823111610102578063a9059cbb11610095578063de3cb85d11610064578063de3cb85d14610622578063e8078d9414610642578063f2fde38b1461064a578063f8b45b051461066a57600080fd5b8063a9059cbb14610589578063c04a5414146105a9578063c3f70b52146105c7578063dd62ed3e146105dc57600080fd5b80638d3e6e40116100d15780638d3e6e40146104df5780638da5cb5b1461051857806395d89b4114610536578063a6097b0a1461056957600080fd5b806370a082311461043b578063715018a61461047157806375f0a8741461048657806376a39c28146104bf57600080fd5b8063368f48001161017a5780634fcd2446116101495780634fcd24461461038157806357ff135a146103a15780635a90a49e146103c15780636373ea69146103fa57600080fd5b8063368f48001461032257806346b898341461034257806347062402146103575780634d4ce9351461036c57600080fd5b806323b872dd116101b657806323b872dd146102a75780632b14ca56146102c75780632fb528ba146102ee578063313ce5671461030e57600080fd5b806306fdde03146101f3578063095ea7b314610232578063147c9f6d1461026257806318160ddd1461028457600080fd5b366101ee57005b600080fd5b3480156101ff57600080fd5b506040805180820190915260048152630434f55560e41b60208201525b6040516102299190612156565b60405180910390f35b34801561023e57600080fd5b5061025261024d3660046121b9565b61067f565b6040519015158152602001610229565b34801561026e57600080fd5b5061028261027d3660046121e5565b6106ec565b005b34801561029057600080fd5b50610299610880565b604051908152602001610229565b3480156102b357600080fd5b506102526102c2366004612230565b6108a2565b3480156102d357600080fd5b506102dc61095c565b60405160ff9091168152602001610229565b3480156102fa57600080fd5b50610282610309366004612297565b610989565b34801561031a57600080fd5b5060096102dc565b34801561032e57600080fd5b5061028261033d3660046122dc565b610ab7565b34801561034e57600080fd5b50600a54610299565b34801561036357600080fd5b506102dc610bfc565b34801561037857600080fd5b50600b54610299565b34801561038d57600080fd5b5061028261039c366004612306565b610c23565b3480156103ad57600080fd5b506102826103bc366004612330565b610cc3565b3480156103cd57600080fd5b506102526103dc366004612375565b6001600160a01b03166000908152600f602052604090205460ff1690565b34801561040657600080fd5b506005546040805161ffff80841682526201000084048116602083015264010000000090930490921690820152606001610229565b34801561044757600080fd5b50610299610456366004612375565b6001600160a01b03166000908152600d602052604090205490565b34801561047d57600080fd5b50610282610d99565b34801561049257600080fd5b50600554600160401b90046001600160a01b03165b6040516001600160a01b039091168152602001610229565b3480156104cb57600080fd5b506102826104da366004612392565b610e08565b3480156104eb57600080fd5b506102526104fa366004612375565b6001600160a01b031660009081526010602052604090205460ff1690565b34801561052457600080fd5b506000546001600160a01b03166104a7565b34801561054257600080fd5b5060408051808201909152600a8152692922ab27a62aaa24a7a760b11b602082015261021c565b34801561057557600080fd5b506102826105843660046123e0565b610eeb565b34801561059557600080fd5b506102526105a43660046121b9565b6110ad565b3480156105b557600080fd5b506006546001600160a01b03166104a7565b3480156105d357600080fd5b50600854610299565b3480156105e857600080fd5b506102996105f7366004612434565b6001600160a01b039182166000908152600e6020908152604080832093909416825291909152205490565b34801561062e57600080fd5b5061028261063d36600461246d565b6110e6565b61028261118d565b34801561065657600080fd5b50610282610665366004612375565b6114e2565b34801561067657600080fd5b50600954610299565b336000818152600e602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906106da9086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b0316331461071f5760405162461bcd60e51b815260040161071690612486565b60405180910390fd5b6001600160a01b03831660009081526014602052604090205460ff1615801561076157506001600160a01b03821660009081526014602052604090205460ff16155b801561078657506001600160a01b03811660009081526014602052604090205460ff16155b6107d25760405162461bcd60e51b815260206004820152601760248201527f4c502063616e6e6f74206265207461782077616c6c65740000000000000000006044820152606401610716565b6005805468010000000000000000600160e01b031916600160401b6001600160a01b0395861690810291909117909155600680546001600160a01b03199081169486169485179091556011805490911692909416919091179092556000918252600f60208181526040808520805460ff199081166001908117909255601080855283882080548316841790559587529383528186208054851682179055939091529092208054909216179055565b600061088e6009600a6125b7565b61089d9064174876e8006125c6565b905090565b60006108ad84611560565b6108c95760405162461bcd60e51b8152600401610716906125dd565b6001600160a01b0384166000908152600e6020908152604080832033845290915290205460001914610949576001600160a01b0384166000908152600e60209081526040808320338452909152902054610924908390612607565b6001600160a01b0385166000908152600e602090815260408083203384529091529020555b6109548484846115c6565b949350505050565b6000600454600354116109785750600254610100900460ff1690565b506002546301000000900460ff1690565b6000546001600160a01b031633146109b35760405162461bcd60e51b815260040161071690612486565b6015805461ff001916610100179055606460ff83161115610a165760405162461bcd60e51b815260206004820152601a60248201527f43616e6e6f742073776170206d6f7265207468616e20313030250000000000006044820152606401610716565b306000908152600d6020526040812054606490610a379060ff8616906125c6565b610a41919061261a565b9050610a4f6009600a6125b7565b811115610a5f57610a5f816118e1565b8115610aa7574780610a9c5760405162461bcd60e51b815260206004820152600660248201526509cde408aa8960d31b6044820152606401610716565b610aa547611a2b565b505b50506015805461ff001916905550565b6000546001600160a01b03163314610ae15760405162461bcd60e51b815260040161071690612486565b60006103e861ffff8416610af76009600a6125b7565b610b069064174876e8006125c6565b610b1091906125c6565b610b1a919061261a565b610b2590600161263c565b9050600854811015610b665760405162461bcd60e51b815260206004820152600a602482015269747820746f6f206c6f7760b01b6044820152606401610716565b600881905560006103e861ffff8416610b816009600a6125b7565b610b909064174876e8006125c6565b610b9a91906125c6565b610ba4919061261a565b610baf90600161263c565b9050600954811015610bf45760405162461bcd60e51b815260206004820152600e60248201526d77616c6c657420746f6f206c6f7760901b6044820152606401610716565b600955505050565b600060045460035411610c13575060025460ff1690565b5060025462010000900460ff1690565b6000546001600160a01b03163314610c4d5760405162461bcd60e51b815260040161071690612486565b6014610c59828461264f565b60ff161115610c9f5760405162461bcd60e51b81526020600482015260126024820152710a4deeadcc8e8e4d2e040e8dede40d0d2ced60731b6044820152606401610716565b6002805460ff9283166101000261ffff199091169290931691909117919091179055565b6000546001600160a01b03163314610ced5760405162461bcd60e51b815260040161071690612486565b8080610cf65750815b15610d57576001600160a01b03831660009081526014602052604090205460ff1615610d575760405162461bcd60e51b815260206004820152601060248201526f043616e6e6f74206578656d7074204c560841b6044820152606401610716565b6001600160a01b039092166000908152600f60209081526040808320805494151560ff1995861617905560109091529020805492151592909116919091179055565b6000546001600160a01b03163314610dc35760405162461bcd60e51b815260040161071690612486565b600080546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b6000546001600160a01b03163314610e325760405162461bcd60e51b815260040161071690612486565b600081610e3f8486612668565b610e499190612668565b905060008161ffff1611610e915760405162461bcd60e51b815260206004820152600f60248201526e0416c6c2063616e6e6f74206265203608c1b6044820152606401610716565b6005805461ffff928316600160301b0267ffff00000000000019948416620100000263ffffffff19978516640100000000029790971665ffffffffffff199092169190911794909216939093179390931716919091179055565b6000546001600160a01b03163314610f155760405162461bcd60e51b815260040161071690612486565b63ffffffff808416908516610f2c6009600a6125b7565b610f3b9064174876e8006125c6565b610f4591906125c6565b610f4f919061261a565b600a819055508063ffffffff168263ffffffff166009600a610f7191906125b7565b610f809064174876e8006125c6565b610f8a91906125c6565b610f94919061261a565b600b819055600a541115610fda5760405162461bcd60e51b815260206004820152600d60248201526c26b4b717a6b0bc1032b93937b960991b6044820152606401610716565b620186a0610fea6009600a6125b7565b610ff99064174876e8006125c6565b611003919061261a565b600b54116110415760405162461bcd60e51b815260206004820152600b60248201526a4d617820746f6f206c6f7760a81b6044820152606401610716565b606461104f6009600a6125b7565b61105e9064174876e8006125c6565b611068919061261a565b600b54106110a75760405162461bcd60e51b815260206004820152600c60248201526b09ac2f040e8dede40d0d2ced60a31b6044820152606401610716565b50505050565b60006110b833611560565b6110d45760405162461bcd60e51b8152600401610716906125dd565b6110df3384846115c6565b9392505050565b6011546001600160a01b031633146111385760405162461bcd60e51b81526020600482015260156024820152741e5bdd49dc99481b9bdd08185d5d1a1bdc9a5e9959605a1b6044820152606401610716565b606481106111885760405162461bcd60e51b815260206004820152601860248201527f6d757374206265206c657373207468616e2031303020747800000000000000006044820152606401610716565b600455565b6000546001600160a01b031633146111b75760405162461bcd60e51b815260040161071690612486565b6015805461ff0019166101001790556013546001600160a01b03161561120b5760405162461bcd60e51b81526020600482015260096024820152684c502065786973747360b81b6044820152606401610716565b60155460ff16156112505760405162461bcd60e51b815260206004820152600f60248201526e3a3930b234b7339034b99037b832b760891b6044820152606401610716565b600034118061125f5750600047115b6112ab5760405162461bcd60e51b815260206004820152601d60248201527f4e6f2045544820696e20636f6e7472616374206f72206d6573736167650000006044820152606401610716565b306000908152600d60205260409020546112ff5760405162461bcd60e51b8152602060048201526015602482015274139bc81d1bdad95b9cc81a5b8818dbdb9d1c9858dd605a1b6044820152606401610716565b601260009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611352573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611376919061268a565b6001600160a01b031663c9c6539630601260009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113fc919061268a565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015611449573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061146d919061268a565b601380546001600160a01b0319166001600160a01b0392909216919091179055306000908152600d60205260408120546114a8914790611b33565b6013546001600160a01b03166000908152601460205260409020805460ff191660011790556114d5611bee565b6015805461ff0019169055565b6000546001600160a01b0316331461150c5760405162461bcd60e51b815260040161071690612486565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b601554600090819060ff1615611578575060016106e6565b6001600160a01b0383166000908152600f602052604090205460ff1680156115b857506001600160a01b03831660009081526010602052604090205460ff165b156106e65750600192915050565b60006001600160a01b03841661161e5760405162461bcd60e51b815260206004820152601d60248201527f4e6f207472616e73666572732066726f6d205a65726f2077616c6c65740000006044820152606401610716565b60155460ff16611684576001600160a01b0384166000908152600f602052604090205460ff16801561166857506001600160a01b03841660009081526010602052604090205460ff165b6116845760405162461bcd60e51b8152600401610716906125dd565b601554610100900460ff161580156116b457506001600160a01b03831660009081526014602052604090205460ff165b156116c1576116c1611cab565b600154431080156116d457506007544310155b80156116f857506001600160a01b03841660009081526014602052604090205460ff165b15611743576001600160a01b03831632146117435760405162461bcd60e51b815260206004820152600b60248201526a13515588189b1bd8dad95960aa1b6044820152606401610716565b6001600160a01b038416301480159061176557506001600160a01b0383163014155b801561177f57506000546001600160a01b03858116911614155b156117cf5761178f848484611e1f565b6117cf5760405162461bcd60e51b815260206004820152601160248201527054582065786365656473206c696d69747360781b6044820152606401610716565b60006117dc858585611ee9565b905060006117ea8285612607565b905060035460016117fb919061263c565b6003556001600160a01b0386166000908152600d6020526040902054611822908590612607565b6001600160a01b0387166000908152600d6020526040812091909155600c805484929061185090849061263c565b90915550506001600160a01b0385166000908152600d602052604090205461187990829061263c565b6001600160a01b038087166000818152600d602052604090819020939093559151908816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906118cd9085815260200190565b60405180910390a350600195945050505050565b6118ea816120b1565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061191f5761191f6126a7565b6001600160a01b03928316602091820292909201810191909152601254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611978573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061199c919061268a565b816001815181106119af576119af6126a7565b6001600160a01b03928316602091820292909201015260125460405163791ac94760e01b815291169063791ac947906119f59085906000908690309042906004016126bd565b600060405180830381600087803b158015611a0f57600080fd5b505af1158015611a23573d6000803e3d6000fd5b505050505050565b600554600090611a479061ffff62010000820481169116612668565b905061ffff811615611b2f5760055460009061ffff80841691611a6b9116856125c6565b611a75919061261a565b60055490915060009061ffff80851691611a97916201000090910416866125c6565b611aa1919061261a565b90508115611aeb57600554604051600160401b9091046001600160a01b0316906108fc8415029084906000818181858888f19350505050158015611ae9573d6000803e3d6000fd5b505b80156110a7576006546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611b2b573d6000803e3d6000fd5b5050505b5050565b6011546001600160a01b03168115611b49575060005b611b52846120b1565b60125460405163f305d71960e01b81523060048201526024810186905260006044820181905260648201526001600160a01b0383811660848301524260a48301529091169063f305d71990859060c40160606040518083038185885af1158015611bc0573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611be5919061272e565b50505050505050565b6064611bfc6009600a6125b7565b611c0b9064174876e8006125c6565b611c169060036125c6565b611c20919061261a565b6008556064611c316009600a6125b7565b611c409064174876e8006125c6565b611c4b9060036125c6565b611c55919061261a565b6009556015805460ff191660019081179091554360078190556000549154600160b81b830460ff90811693600160b01b90041691611c929161263c565b611c9c919061263c565b611ca6919061263c565b600155565b6015805461ff001916610100179055600c54600a548110801590611cd1575060155460ff165b15611e1157600b548110611ce45750600b545b60055460009060029061ffff600160301b8204811691611d0e9164010000000090910416856125c6565b611d18919061261a565b611d22919061261a565b90506000611d308284612607565b9050611d3e6009600a6125b7565b811115611dfd57306000908152600d6020526040812080544792869291611d6690849061263c565b90915550611d759050826118e1565b83600c6000828254611d879190612607565b9091555060009050611d998247612607565b600554909150640100000000900461ffff1615611dfa5760055460009061ffff600160301b8204811691611dd79164010000000090910416846125c6565b611de1919061261a565b9050611dec856120b1565b611df885826000611b33565b505b50505b478015611e0d57611e0d81611a2b565b5050505b506015805461ff0019169055565b60155460009060019060ff168015611e5057506001600160a01b03851660009081526010602052604090205460ff16155b8015611e7557506001600160a01b03841660009081526010602052604090205460ff16155b1561095457600854831115611e8c57506000610954565b6001600160a01b03841660009081526014602052604090205460ff16158015611ed957506009546001600160a01b0385166000908152600d6020526040902054611ed790859061263c565b115b1561095457506000949350505050565b601554600090819060ff161580611f1857506001600160a01b0385166000908152600f602052604090205460ff165b80611f3b57506001600160a01b0384166000908152600f602052604090205460ff165b15611f4857506000610954565b6001600160a01b03851660009081526014602052604090205460ff16156120455760005460075460ff600160b81b8304811692611f9092600160b01b9091049091169061263c565b611f9a919061263c565b4310611fe357606460045460035411611fb85760025460ff16611fc5565b60025462010000900460ff165b611fd29060ff16856125c6565b611fdc919061261a565b9050610954565b600054600754611ffd91600160b01b900460ff169061263c565b431061201d57600054606490611fd290600160a81b900460ff16856125c6565b600754431061204057600054606490611fd290600160a01b900460ff16856125c6565b610954565b6001600160a01b03841660009081526014602052604090205460ff16156109545760646004546003541161208357600254610100900460ff16612091565b6002546301000000900460ff165b61209e9060ff16856125c6565b6120a8919061261a565b95945050505050565b306000908152600e60209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d845290915290205481111561215357306000818152600e60209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d808552908352928190206000199081905590519081529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35b50565b600060208083528351808285015260005b8181101561218357858101830151858201604001528201612167565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461215357600080fd5b600080604083850312156121cc57600080fd5b82356121d7816121a4565b946020939093013593505050565b6000806000606084860312156121fa57600080fd5b8335612205816121a4565b92506020840135612215816121a4565b91506040840135612225816121a4565b809150509250925092565b60008060006060848603121561224557600080fd5b8335612250816121a4565b92506020840135612260816121a4565b929592945050506040919091013590565b803560ff8116811461228257600080fd5b919050565b8035801515811461228257600080fd5b600080604083850312156122aa57600080fd5b6122b383612271565b91506122c160208401612287565b90509250929050565b803561ffff8116811461228257600080fd5b600080604083850312156122ef57600080fd5b6122f8836122ca565b91506122c1602084016122ca565b6000806040838503121561231957600080fd5b61232283612271565b91506122c160208401612271565b60008060006060848603121561234557600080fd5b8335612350816121a4565b925061235e60208501612287565b915061236c60408501612287565b90509250925092565b60006020828403121561238757600080fd5b81356110df816121a4565b6000806000606084860312156123a757600080fd5b6123b0846122ca565b92506123be602085016122ca565b915061236c604085016122ca565b803563ffffffff8116811461228257600080fd5b600080600080608085870312156123f657600080fd5b6123ff856123cc565b935061240d602086016123cc565b925061241b604086016123cc565b9150612429606086016123cc565b905092959194509250565b6000806040838503121561244757600080fd5b8235612452816121a4565b91506020830135612462816121a4565b809150509250929050565b60006020828403121561247f57600080fd5b5035919050565b60208082526018908201527f4f6e6c79206f776e65722063616e2063616c6c20746869730000000000000000604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561250e5781600019048211156124f4576124f46124bd565b8085161561250157918102915b93841c93908002906124d8565b509250929050565b600082612525575060016106e6565b81612532575060006106e6565b816001811461254857600281146125525761256e565b60019150506106e6565b60ff841115612563576125636124bd565b50506001821b6106e6565b5060208310610133831016604e8410600b8410161715612591575081810a6106e6565b61259b83836124d3565b80600019048211156125af576125af6124bd565b029392505050565b60006110df60ff841683612516565b80820281158282048414176106e6576106e66124bd565b60208082526010908201526f2a3930b234b733903737ba1037b832b760811b604082015260600190565b818103818111156106e6576106e66124bd565b60008261263757634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156106e6576106e66124bd565b60ff81811683821601908111156106e6576106e66124bd565b61ffff818116838216019080821115612683576126836124bd565b5092915050565b60006020828403121561269c57600080fd5b81516110df816121a4565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561270d5784516001600160a01b0316835293830193918301916001016126e8565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561274357600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220003a080d8021071aa04a32228feebddb4a136283ac95ed677fa40ab851c1f52964736f6c63430008130033ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef
Deployed Bytecode
0x6080604052600436106101e75760003560e01c806370a0823111610102578063a9059cbb11610095578063de3cb85d11610064578063de3cb85d14610622578063e8078d9414610642578063f2fde38b1461064a578063f8b45b051461066a57600080fd5b8063a9059cbb14610589578063c04a5414146105a9578063c3f70b52146105c7578063dd62ed3e146105dc57600080fd5b80638d3e6e40116100d15780638d3e6e40146104df5780638da5cb5b1461051857806395d89b4114610536578063a6097b0a1461056957600080fd5b806370a082311461043b578063715018a61461047157806375f0a8741461048657806376a39c28146104bf57600080fd5b8063368f48001161017a5780634fcd2446116101495780634fcd24461461038157806357ff135a146103a15780635a90a49e146103c15780636373ea69146103fa57600080fd5b8063368f48001461032257806346b898341461034257806347062402146103575780634d4ce9351461036c57600080fd5b806323b872dd116101b657806323b872dd146102a75780632b14ca56146102c75780632fb528ba146102ee578063313ce5671461030e57600080fd5b806306fdde03146101f3578063095ea7b314610232578063147c9f6d1461026257806318160ddd1461028457600080fd5b366101ee57005b600080fd5b3480156101ff57600080fd5b506040805180820190915260048152630434f55560e41b60208201525b6040516102299190612156565b60405180910390f35b34801561023e57600080fd5b5061025261024d3660046121b9565b61067f565b6040519015158152602001610229565b34801561026e57600080fd5b5061028261027d3660046121e5565b6106ec565b005b34801561029057600080fd5b50610299610880565b604051908152602001610229565b3480156102b357600080fd5b506102526102c2366004612230565b6108a2565b3480156102d357600080fd5b506102dc61095c565b60405160ff9091168152602001610229565b3480156102fa57600080fd5b50610282610309366004612297565b610989565b34801561031a57600080fd5b5060096102dc565b34801561032e57600080fd5b5061028261033d3660046122dc565b610ab7565b34801561034e57600080fd5b50600a54610299565b34801561036357600080fd5b506102dc610bfc565b34801561037857600080fd5b50600b54610299565b34801561038d57600080fd5b5061028261039c366004612306565b610c23565b3480156103ad57600080fd5b506102826103bc366004612330565b610cc3565b3480156103cd57600080fd5b506102526103dc366004612375565b6001600160a01b03166000908152600f602052604090205460ff1690565b34801561040657600080fd5b506005546040805161ffff80841682526201000084048116602083015264010000000090930490921690820152606001610229565b34801561044757600080fd5b50610299610456366004612375565b6001600160a01b03166000908152600d602052604090205490565b34801561047d57600080fd5b50610282610d99565b34801561049257600080fd5b50600554600160401b90046001600160a01b03165b6040516001600160a01b039091168152602001610229565b3480156104cb57600080fd5b506102826104da366004612392565b610e08565b3480156104eb57600080fd5b506102526104fa366004612375565b6001600160a01b031660009081526010602052604090205460ff1690565b34801561052457600080fd5b506000546001600160a01b03166104a7565b34801561054257600080fd5b5060408051808201909152600a8152692922ab27a62aaa24a7a760b11b602082015261021c565b34801561057557600080fd5b506102826105843660046123e0565b610eeb565b34801561059557600080fd5b506102526105a43660046121b9565b6110ad565b3480156105b557600080fd5b506006546001600160a01b03166104a7565b3480156105d357600080fd5b50600854610299565b3480156105e857600080fd5b506102996105f7366004612434565b6001600160a01b039182166000908152600e6020908152604080832093909416825291909152205490565b34801561062e57600080fd5b5061028261063d36600461246d565b6110e6565b61028261118d565b34801561065657600080fd5b50610282610665366004612375565b6114e2565b34801561067657600080fd5b50600954610299565b336000818152600e602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906106da9086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b0316331461071f5760405162461bcd60e51b815260040161071690612486565b60405180910390fd5b6001600160a01b03831660009081526014602052604090205460ff1615801561076157506001600160a01b03821660009081526014602052604090205460ff16155b801561078657506001600160a01b03811660009081526014602052604090205460ff16155b6107d25760405162461bcd60e51b815260206004820152601760248201527f4c502063616e6e6f74206265207461782077616c6c65740000000000000000006044820152606401610716565b6005805468010000000000000000600160e01b031916600160401b6001600160a01b0395861690810291909117909155600680546001600160a01b03199081169486169485179091556011805490911692909416919091179092556000918252600f60208181526040808520805460ff199081166001908117909255601080855283882080548316841790559587529383528186208054851682179055939091529092208054909216179055565b600061088e6009600a6125b7565b61089d9064174876e8006125c6565b905090565b60006108ad84611560565b6108c95760405162461bcd60e51b8152600401610716906125dd565b6001600160a01b0384166000908152600e6020908152604080832033845290915290205460001914610949576001600160a01b0384166000908152600e60209081526040808320338452909152902054610924908390612607565b6001600160a01b0385166000908152600e602090815260408083203384529091529020555b6109548484846115c6565b949350505050565b6000600454600354116109785750600254610100900460ff1690565b506002546301000000900460ff1690565b6000546001600160a01b031633146109b35760405162461bcd60e51b815260040161071690612486565b6015805461ff001916610100179055606460ff83161115610a165760405162461bcd60e51b815260206004820152601a60248201527f43616e6e6f742073776170206d6f7265207468616e20313030250000000000006044820152606401610716565b306000908152600d6020526040812054606490610a379060ff8616906125c6565b610a41919061261a565b9050610a4f6009600a6125b7565b811115610a5f57610a5f816118e1565b8115610aa7574780610a9c5760405162461bcd60e51b815260206004820152600660248201526509cde408aa8960d31b6044820152606401610716565b610aa547611a2b565b505b50506015805461ff001916905550565b6000546001600160a01b03163314610ae15760405162461bcd60e51b815260040161071690612486565b60006103e861ffff8416610af76009600a6125b7565b610b069064174876e8006125c6565b610b1091906125c6565b610b1a919061261a565b610b2590600161263c565b9050600854811015610b665760405162461bcd60e51b815260206004820152600a602482015269747820746f6f206c6f7760b01b6044820152606401610716565b600881905560006103e861ffff8416610b816009600a6125b7565b610b909064174876e8006125c6565b610b9a91906125c6565b610ba4919061261a565b610baf90600161263c565b9050600954811015610bf45760405162461bcd60e51b815260206004820152600e60248201526d77616c6c657420746f6f206c6f7760901b6044820152606401610716565b600955505050565b600060045460035411610c13575060025460ff1690565b5060025462010000900460ff1690565b6000546001600160a01b03163314610c4d5760405162461bcd60e51b815260040161071690612486565b6014610c59828461264f565b60ff161115610c9f5760405162461bcd60e51b81526020600482015260126024820152710a4deeadcc8e8e4d2e040e8dede40d0d2ced60731b6044820152606401610716565b6002805460ff9283166101000261ffff199091169290931691909117919091179055565b6000546001600160a01b03163314610ced5760405162461bcd60e51b815260040161071690612486565b8080610cf65750815b15610d57576001600160a01b03831660009081526014602052604090205460ff1615610d575760405162461bcd60e51b815260206004820152601060248201526f043616e6e6f74206578656d7074204c560841b6044820152606401610716565b6001600160a01b039092166000908152600f60209081526040808320805494151560ff1995861617905560109091529020805492151592909116919091179055565b6000546001600160a01b03163314610dc35760405162461bcd60e51b815260040161071690612486565b600080546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b6000546001600160a01b03163314610e325760405162461bcd60e51b815260040161071690612486565b600081610e3f8486612668565b610e499190612668565b905060008161ffff1611610e915760405162461bcd60e51b815260206004820152600f60248201526e0416c6c2063616e6e6f74206265203608c1b6044820152606401610716565b6005805461ffff928316600160301b0267ffff00000000000019948416620100000263ffffffff19978516640100000000029790971665ffffffffffff199092169190911794909216939093179390931716919091179055565b6000546001600160a01b03163314610f155760405162461bcd60e51b815260040161071690612486565b63ffffffff808416908516610f2c6009600a6125b7565b610f3b9064174876e8006125c6565b610f4591906125c6565b610f4f919061261a565b600a819055508063ffffffff168263ffffffff166009600a610f7191906125b7565b610f809064174876e8006125c6565b610f8a91906125c6565b610f94919061261a565b600b819055600a541115610fda5760405162461bcd60e51b815260206004820152600d60248201526c26b4b717a6b0bc1032b93937b960991b6044820152606401610716565b620186a0610fea6009600a6125b7565b610ff99064174876e8006125c6565b611003919061261a565b600b54116110415760405162461bcd60e51b815260206004820152600b60248201526a4d617820746f6f206c6f7760a81b6044820152606401610716565b606461104f6009600a6125b7565b61105e9064174876e8006125c6565b611068919061261a565b600b54106110a75760405162461bcd60e51b815260206004820152600c60248201526b09ac2f040e8dede40d0d2ced60a31b6044820152606401610716565b50505050565b60006110b833611560565b6110d45760405162461bcd60e51b8152600401610716906125dd565b6110df3384846115c6565b9392505050565b6011546001600160a01b031633146111385760405162461bcd60e51b81526020600482015260156024820152741e5bdd49dc99481b9bdd08185d5d1a1bdc9a5e9959605a1b6044820152606401610716565b606481106111885760405162461bcd60e51b815260206004820152601860248201527f6d757374206265206c657373207468616e2031303020747800000000000000006044820152606401610716565b600455565b6000546001600160a01b031633146111b75760405162461bcd60e51b815260040161071690612486565b6015805461ff0019166101001790556013546001600160a01b03161561120b5760405162461bcd60e51b81526020600482015260096024820152684c502065786973747360b81b6044820152606401610716565b60155460ff16156112505760405162461bcd60e51b815260206004820152600f60248201526e3a3930b234b7339034b99037b832b760891b6044820152606401610716565b600034118061125f5750600047115b6112ab5760405162461bcd60e51b815260206004820152601d60248201527f4e6f2045544820696e20636f6e7472616374206f72206d6573736167650000006044820152606401610716565b306000908152600d60205260409020546112ff5760405162461bcd60e51b8152602060048201526015602482015274139bc81d1bdad95b9cc81a5b8818dbdb9d1c9858dd605a1b6044820152606401610716565b601260009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611352573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611376919061268a565b6001600160a01b031663c9c6539630601260009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113fc919061268a565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015611449573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061146d919061268a565b601380546001600160a01b0319166001600160a01b0392909216919091179055306000908152600d60205260408120546114a8914790611b33565b6013546001600160a01b03166000908152601460205260409020805460ff191660011790556114d5611bee565b6015805461ff0019169055565b6000546001600160a01b0316331461150c5760405162461bcd60e51b815260040161071690612486565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b601554600090819060ff1615611578575060016106e6565b6001600160a01b0383166000908152600f602052604090205460ff1680156115b857506001600160a01b03831660009081526010602052604090205460ff165b156106e65750600192915050565b60006001600160a01b03841661161e5760405162461bcd60e51b815260206004820152601d60248201527f4e6f207472616e73666572732066726f6d205a65726f2077616c6c65740000006044820152606401610716565b60155460ff16611684576001600160a01b0384166000908152600f602052604090205460ff16801561166857506001600160a01b03841660009081526010602052604090205460ff165b6116845760405162461bcd60e51b8152600401610716906125dd565b601554610100900460ff161580156116b457506001600160a01b03831660009081526014602052604090205460ff165b156116c1576116c1611cab565b600154431080156116d457506007544310155b80156116f857506001600160a01b03841660009081526014602052604090205460ff165b15611743576001600160a01b03831632146117435760405162461bcd60e51b815260206004820152600b60248201526a13515588189b1bd8dad95960aa1b6044820152606401610716565b6001600160a01b038416301480159061176557506001600160a01b0383163014155b801561177f57506000546001600160a01b03858116911614155b156117cf5761178f848484611e1f565b6117cf5760405162461bcd60e51b815260206004820152601160248201527054582065786365656473206c696d69747360781b6044820152606401610716565b60006117dc858585611ee9565b905060006117ea8285612607565b905060035460016117fb919061263c565b6003556001600160a01b0386166000908152600d6020526040902054611822908590612607565b6001600160a01b0387166000908152600d6020526040812091909155600c805484929061185090849061263c565b90915550506001600160a01b0385166000908152600d602052604090205461187990829061263c565b6001600160a01b038087166000818152600d602052604090819020939093559151908816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906118cd9085815260200190565b60405180910390a350600195945050505050565b6118ea816120b1565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061191f5761191f6126a7565b6001600160a01b03928316602091820292909201810191909152601254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611978573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061199c919061268a565b816001815181106119af576119af6126a7565b6001600160a01b03928316602091820292909201015260125460405163791ac94760e01b815291169063791ac947906119f59085906000908690309042906004016126bd565b600060405180830381600087803b158015611a0f57600080fd5b505af1158015611a23573d6000803e3d6000fd5b505050505050565b600554600090611a479061ffff62010000820481169116612668565b905061ffff811615611b2f5760055460009061ffff80841691611a6b9116856125c6565b611a75919061261a565b60055490915060009061ffff80851691611a97916201000090910416866125c6565b611aa1919061261a565b90508115611aeb57600554604051600160401b9091046001600160a01b0316906108fc8415029084906000818181858888f19350505050158015611ae9573d6000803e3d6000fd5b505b80156110a7576006546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611b2b573d6000803e3d6000fd5b5050505b5050565b6011546001600160a01b03168115611b49575060005b611b52846120b1565b60125460405163f305d71960e01b81523060048201526024810186905260006044820181905260648201526001600160a01b0383811660848301524260a48301529091169063f305d71990859060c40160606040518083038185885af1158015611bc0573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611be5919061272e565b50505050505050565b6064611bfc6009600a6125b7565b611c0b9064174876e8006125c6565b611c169060036125c6565b611c20919061261a565b6008556064611c316009600a6125b7565b611c409064174876e8006125c6565b611c4b9060036125c6565b611c55919061261a565b6009556015805460ff191660019081179091554360078190556000549154600160b81b830460ff90811693600160b01b90041691611c929161263c565b611c9c919061263c565b611ca6919061263c565b600155565b6015805461ff001916610100179055600c54600a548110801590611cd1575060155460ff165b15611e1157600b548110611ce45750600b545b60055460009060029061ffff600160301b8204811691611d0e9164010000000090910416856125c6565b611d18919061261a565b611d22919061261a565b90506000611d308284612607565b9050611d3e6009600a6125b7565b811115611dfd57306000908152600d6020526040812080544792869291611d6690849061263c565b90915550611d759050826118e1565b83600c6000828254611d879190612607565b9091555060009050611d998247612607565b600554909150640100000000900461ffff1615611dfa5760055460009061ffff600160301b8204811691611dd79164010000000090910416846125c6565b611de1919061261a565b9050611dec856120b1565b611df885826000611b33565b505b50505b478015611e0d57611e0d81611a2b565b5050505b506015805461ff0019169055565b60155460009060019060ff168015611e5057506001600160a01b03851660009081526010602052604090205460ff16155b8015611e7557506001600160a01b03841660009081526010602052604090205460ff16155b1561095457600854831115611e8c57506000610954565b6001600160a01b03841660009081526014602052604090205460ff16158015611ed957506009546001600160a01b0385166000908152600d6020526040902054611ed790859061263c565b115b1561095457506000949350505050565b601554600090819060ff161580611f1857506001600160a01b0385166000908152600f602052604090205460ff165b80611f3b57506001600160a01b0384166000908152600f602052604090205460ff165b15611f4857506000610954565b6001600160a01b03851660009081526014602052604090205460ff16156120455760005460075460ff600160b81b8304811692611f9092600160b01b9091049091169061263c565b611f9a919061263c565b4310611fe357606460045460035411611fb85760025460ff16611fc5565b60025462010000900460ff165b611fd29060ff16856125c6565b611fdc919061261a565b9050610954565b600054600754611ffd91600160b01b900460ff169061263c565b431061201d57600054606490611fd290600160a81b900460ff16856125c6565b600754431061204057600054606490611fd290600160a01b900460ff16856125c6565b610954565b6001600160a01b03841660009081526014602052604090205460ff16156109545760646004546003541161208357600254610100900460ff16612091565b6002546301000000900460ff165b61209e9060ff16856125c6565b6120a8919061261a565b95945050505050565b306000908152600e60209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d845290915290205481111561215357306000818152600e60209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d808552908352928190206000199081905590519081529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35b50565b600060208083528351808285015260005b8181101561218357858101830151858201604001528201612167565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461215357600080fd5b600080604083850312156121cc57600080fd5b82356121d7816121a4565b946020939093013593505050565b6000806000606084860312156121fa57600080fd5b8335612205816121a4565b92506020840135612215816121a4565b91506040840135612225816121a4565b809150509250925092565b60008060006060848603121561224557600080fd5b8335612250816121a4565b92506020840135612260816121a4565b929592945050506040919091013590565b803560ff8116811461228257600080fd5b919050565b8035801515811461228257600080fd5b600080604083850312156122aa57600080fd5b6122b383612271565b91506122c160208401612287565b90509250929050565b803561ffff8116811461228257600080fd5b600080604083850312156122ef57600080fd5b6122f8836122ca565b91506122c1602084016122ca565b6000806040838503121561231957600080fd5b61232283612271565b91506122c160208401612271565b60008060006060848603121561234557600080fd5b8335612350816121a4565b925061235e60208501612287565b915061236c60408501612287565b90509250925092565b60006020828403121561238757600080fd5b81356110df816121a4565b6000806000606084860312156123a757600080fd5b6123b0846122ca565b92506123be602085016122ca565b915061236c604085016122ca565b803563ffffffff8116811461228257600080fd5b600080600080608085870312156123f657600080fd5b6123ff856123cc565b935061240d602086016123cc565b925061241b604086016123cc565b9150612429606086016123cc565b905092959194509250565b6000806040838503121561244757600080fd5b8235612452816121a4565b91506020830135612462816121a4565b809150509250929050565b60006020828403121561247f57600080fd5b5035919050565b60208082526018908201527f4f6e6c79206f776e65722063616e2063616c6c20746869730000000000000000604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561250e5781600019048211156124f4576124f46124bd565b8085161561250157918102915b93841c93908002906124d8565b509250929050565b600082612525575060016106e6565b81612532575060006106e6565b816001811461254857600281146125525761256e565b60019150506106e6565b60ff841115612563576125636124bd565b50506001821b6106e6565b5060208310610133831016604e8410600b8410161715612591575081810a6106e6565b61259b83836124d3565b80600019048211156125af576125af6124bd565b029392505050565b60006110df60ff841683612516565b80820281158282048414176106e6576106e66124bd565b60208082526010908201526f2a3930b234b733903737ba1037b832b760811b604082015260600190565b818103818111156106e6576106e66124bd565b60008261263757634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156106e6576106e66124bd565b60ff81811683821601908111156106e6576106e66124bd565b61ffff818116838216019080821115612683576126836124bd565b5092915050565b60006020828403121561269c57600080fd5b81516110df816121a4565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561270d5784516001600160a01b0316835293830193918301916001016126e8565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561274357600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220003a080d8021071aa04a32228feebddb4a136283ac95ed677fa40ab851c1f52964736f6c63430008130033
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.