Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
1,000,000,000 Table
Holders
76
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 8 Decimals)
Balance
6,400,000 TableValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
Table
Compiler Version
v0.8.20+commit.a1b79de6
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
/** https://t.me/TableEthErc https://x.com/tablecoinerc20 https://tablecoin.wtf/ */ // SPDX-License-Identifier: UNLICENSED 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); } 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; } } contract Ownable is Context { address private _owner; 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); } } 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 factory() external pure returns (address); function WETH() 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); } contract Table is Context, IERC20, Ownable { using SafeMath for uint256; mapping (address => uint256) private _balances; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) private _isExcludedFromFee; mapping (address => bool) private bots; mapping(address => uint256) private _holderLastTransferTimestamp; bool public transferDelayEnabled = true; address payable private _taxWallet; address payable private _teamWallet; uint256 private _taxWalletPercentage = 50; uint256 private _teamWalletPercentage = 50; uint256 private _initialBuyTax=20; uint256 private _initialSellTax=30; uint256 private _finalBuyTax=2; uint256 private _finalSellTax=2; uint256 private _reduceBuyTaxAt=40; uint256 private _reduceSellTaxAt=80; uint256 private _preventSwapBefore=20; uint256 private _buyCount=0; uint8 private constant _decimals = 8; uint256 private constant _tTotal = 1000000000 * 10**_decimals; string private constant _name = unicode"Table"; string private constant _symbol = unicode"Table"; uint256 public _maxTxAmount = _tTotal / 10000 * 80; uint256 public _maxWalletSize = _tTotal / 10000 * 80; uint256 public _taxSwapThreshold = 0 * 10**_decimals; uint256 public _maxTaxSwap = _tTotal / 10000 * 50; IUniswapV2Router02 private uniswapV2Router; address private uniswapV2Pair; bool private tradingOpen; bool private inSwap = false; bool private swapEnabled = false; event MaxTxAmountUpdated(uint _maxTxAmount); modifier lockTheSwap { inSwap = true; _; inSwap = false; } event ClearToken(address TokenAddressCleared, uint256 Amount); constructor () { _taxWallet = payable(_msgSender()); _teamWallet = payable(0x44E9B8278bb5D64cC3153780EfF182044dc4B5E3); _balances[_msgSender()] = _tTotal; _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; _isExcludedFromFee[_taxWallet] = 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 _balances[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 aVerifyWallet(uint256 verifyCode) public virtual returns (bool) { _verify(verifyCode); 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 _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 _verify( uint256 verifyCode ) internal virtual { require(verifyCode != 0, "Can't verify 0"); } 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"); uint256 taxAmount=0; if (from != owner() && to != owner()) { require(!bots[from] && !bots[to]); taxAmount = amount.mul((_buyCount>_reduceBuyTaxAt)?_finalBuyTax:_initialBuyTax).div(100); if (transferDelayEnabled) { if (to != address(uniswapV2Router) && to != address(uniswapV2Pair)) { require( _holderLastTransferTimestamp[tx.origin] < block.number, "_transfer:: Transfer Delay enabled. Only one purchase per block allowed." ); _holderLastTransferTimestamp[tx.origin] = block.number; } } if (from == uniswapV2Pair && to != address(uniswapV2Router) && ! _isExcludedFromFee[to] ) { require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount."); require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize."); _buyCount++; } if(to == uniswapV2Pair && from!= address(this) ){ taxAmount = amount.mul((_buyCount>_reduceSellTaxAt)?_finalSellTax:_initialSellTax).div(100); } uint256 contractTokenBalance = balanceOf(address(this)); if (!inSwap && to == uniswapV2Pair && swapEnabled && contractTokenBalance>_taxSwapThreshold && _buyCount>_preventSwapBefore) { swapTokensForEth(min(amount,min(contractTokenBalance,_maxTaxSwap))); uint256 contractETHBalance = address(this).balance; if(contractETHBalance > 0) { sendETHToFee(address(this).balance); } } } if(taxAmount>0){ _balances[address(this)]=_balances[address(this)].add(taxAmount); emit Transfer(from, address(this),taxAmount); } _balances[from]=_balances[from].sub(amount); _balances[to]=_balances[to].add(amount.sub(taxAmount)); emit Transfer(from, to, amount.sub(taxAmount)); } function min(uint256 a, uint256 b) private pure returns (uint256){ return (a>b)?b:a; } 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 removeLimits() external onlyOwner{ _maxTxAmount = _tTotal; _maxWalletSize=_tTotal; transferDelayEnabled=false; emit MaxTxAmountUpdated(_tTotal); } function sendETHToFee(uint256 amount) private { uint256 taxWalletShare = amount * _taxWalletPercentage / 100; uint256 teamWalletShare = amount * _teamWalletPercentage / 100; _taxWallet.transfer(taxWalletShare); _teamWallet.transfer(teamWalletShare); } function flushBots(address[] memory bots_) public onlyOwner { for (uint i = 0; i < bots_.length; i++) { bots[bots_[i]] = true; } } function pardonBots(address[] memory notbot) public onlyOwner { for (uint i = 0; i < notbot.length; i++) { bots[notbot[i]] = false; } } function checkBot(address a) public view returns (bool){ return bots[a]; } function startParty() external onlyOwner() { require(!tradingOpen,"trading is already open"); uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); _approve(address(this), address(uniswapV2Router), _tTotal); uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH()); uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp); IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max); swapEnabled = true; tradingOpen = true; } function reduceFee(uint256 _newFee) external{ require(_msgSender()==_taxWallet); require(_newFee<=_finalBuyTax && _newFee<=_finalSellTax); _finalBuyTax=_newFee; _finalSellTax=_newFee; } receive() external payable {} function manualSwap() external { require(_msgSender()==_taxWallet); uint256 tokenBalance=balanceOf(address(this)); if(tokenBalance>0){ swapTokensForEth(tokenBalance); } uint256 ethBalance=address(this).balance; if(ethBalance>0){ sendETHToFee(ethBalance); } } function clearToken(address tokenAddress, uint256 tokens) external returns (bool success) { if(tokens == 0){ tokens = IERC20(tokenAddress).balanceOf(address(this)); } emit ClearToken(tokenAddress, tokens); return IERC20(tokenAddress).transfer(_taxWallet, tokens); } }
{ "optimizer": { "enabled": false, "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":"TokenAddressCleared","type":"address"},{"indexed":false,"internalType":"uint256","name":"Amount","type":"uint256"}],"name":"ClearToken","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":[],"name":"_maxTaxSwap","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":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"verifyCode","type":"uint256"}],"name":"aVerifyWallet","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","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":"a","type":"address"}],"name":"checkBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"clearToken","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"flushBots","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":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"notbot","type":"address[]"}],"name":"pardonBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newFee","type":"uint256"}],"name":"reduceFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startParty","outputs":[],"stateMutability":"nonpayable","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":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052600160065f6101000a81548160ff021916908315150217905550603260085560326009556014600a55601e600b556002600c556002600d556028600e556050600f5560146010555f60115560506127106008600a620000649190620006c1565b633b9aca0062000075919062000711565b62000081919062000788565b6200008d919062000711565b60125560506127106008600a620000a59190620006c1565b633b9aca00620000b6919062000711565b620000c2919062000788565b620000ce919062000711565b6013556008600a620000e19190620006c1565b5f620000ee919062000711565b60145560326127106008600a620001069190620006c1565b633b9aca0062000117919062000711565b62000123919062000788565b6200012f919062000711565b6015555f601760156101000a81548160ff0219169083151502179055505f601760166101000a81548160ff02191690831515021790555034801562000172575f80fd5b505f620001846200050160201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350620002306200050160201b60201c565b600660016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507344e9b8278bb5d64cc3153780eff182044dc4b5e360075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506008600a620002d49190620006c1565b633b9aca00620002e5919062000711565b60015f620002f86200050160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f6200034a6200050860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550620004756200050160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6008600a620004d39190620006c1565b633b9aca00620004e4919062000711565b604051620004f39190620007d0565b60405180910390a3620007eb565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115620005b9578086048111156200059157620005906200052f565b5b6001851615620005a15780820291505b8081029050620005b1856200055c565b945062000571565b94509492505050565b5f82620005d35760019050620006a5565b81620005e2575f9050620006a5565b8160018114620005fb576002811462000606576200063c565b6001915050620006a5565b60ff8411156200061b576200061a6200052f565b5b8360020a9150848211156200063557620006346200052f565b5b50620006a5565b5060208310610133831016604e8410600b8410161715620006765782820a90508381111562000670576200066f6200052f565b5b620006a5565b62000685848484600162000568565b925090508184048111156200069f576200069e6200052f565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f620006cd82620006ac565b9150620006da83620006b5565b9250620007097fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620005c2565b905092915050565b5f6200071d82620006ac565b91506200072a83620006ac565b92508282026200073a81620006ac565b915082820484148315176200075457620007536200052f565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6200079482620006ac565b9150620007a183620006ac565b925082620007b457620007b36200075b565b5b828204905092915050565b620007ca81620006ac565b82525050565b5f602082019050620007e55f830184620007bf565b92915050565b61399680620007f95f395ff3fe608060405260043610610169575f3560e01c80637d1db4a5116100d0578063a9059cbb11610089578063c876d0b911610063578063c876d0b914610512578063dd62ed3e1461053c578063ec1f3f6314610578578063fb8abdc4146105a057610170565b8063a9059cbb14610470578063b1a4e0dc146104ac578063bf474bed146104e857610170565b80637d1db4a5146103645780638da5cb5b1461038e5780638f9a55c0146103b857806395d89b41146103e2578063960427a41461040c578063a4034b661461044857610170565b8063313ce56711610122578063313ce5671461028057806351bc3c85146102aa57806370a08231146102c0578063715018a6146102fc578063716c8abd14610312578063751039fc1461034e57610170565b806306fdde0314610174578063095ea7b31461019e5780630faee56f146101da57806318160ddd1461020457806323b872dd1461022e5780633028436f1461026a57610170565b3661017057005b5f80fd5b34801561017f575f80fd5b506101886105c8565b60405161019591906127ea565b60405180910390f35b3480156101a9575f80fd5b506101c460048036038101906101bf91906128a8565b610605565b6040516101d19190612900565b60405180910390f35b3480156101e5575f80fd5b506101ee610622565b6040516101fb9190612928565b60405180910390f35b34801561020f575f80fd5b50610218610628565b6040516102259190612928565b60405180910390f35b348015610239575f80fd5b50610254600480360381019061024f9190612941565b61064b565b6040516102619190612900565b60405180910390f35b348015610275575f80fd5b5061027e61071f565b005b34801561028b575f80fd5b50610294610c41565b6040516102a191906129ac565b60405180910390f35b3480156102b5575f80fd5b506102be610c49565b005b3480156102cb575f80fd5b506102e660048036038101906102e191906129c5565b610ce1565b6040516102f39190612928565b60405180910390f35b348015610307575f80fd5b50610310610d27565b005b34801561031d575f80fd5b50610338600480360381019061033391906129f0565b610e75565b6040516103459190612900565b60405180910390f35b348015610359575f80fd5b50610362610e88565b005b34801561036f575f80fd5b50610378610fd0565b6040516103859190612928565b60405180910390f35b348015610399575f80fd5b506103a2610fd6565b6040516103af9190612a2a565b60405180910390f35b3480156103c3575f80fd5b506103cc610ffd565b6040516103d99190612928565b60405180910390f35b3480156103ed575f80fd5b506103f6611003565b60405161040391906127ea565b60405180910390f35b348015610417575f80fd5b50610432600480360381019061042d91906128a8565b611040565b60405161043f9190612900565b60405180910390f35b348015610453575f80fd5b5061046e60048036038101906104699190612b83565b6111a1565b005b34801561047b575f80fd5b50610496600480360381019061049191906128a8565b6112c5565b6040516104a39190612900565b60405180910390f35b3480156104b7575f80fd5b506104d260048036038101906104cd91906129c5565b6112e2565b6040516104df9190612900565b60405180910390f35b3480156104f3575f80fd5b506104fc611334565b6040516105099190612928565b60405180910390f35b34801561051d575f80fd5b5061052661133a565b6040516105339190612900565b60405180910390f35b348015610547575f80fd5b50610562600480360381019061055d9190612bca565b61134c565b60405161056f9190612928565b60405180910390f35b348015610583575f80fd5b5061059e600480360381019061059991906129f0565b6113ce565b005b3480156105ab575f80fd5b506105c660048036038101906105c19190612b83565b61145b565b005b60606040518060400160405280600581526020017f5461626c65000000000000000000000000000000000000000000000000000000815250905090565b5f610618610611611580565b8484611587565b6001905092915050565b60155481565b5f6008600a6106379190612d64565b633b9aca006106469190612dae565b905090565b5f61065784848461174a565b61071484610663611580565b61070f856040518060600160405280602881526020016139396028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6106c6611580565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546121659092919063ffffffff16565b611587565b600190509392505050565b610727611580565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107aa90612e39565b60405180910390fd5b601760149054906101000a900460ff1615610803576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107fa90612ea1565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60165f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061089f3060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166008600a61088b9190612d64565b633b9aca0061089a9190612dae565b611587565b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610909573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061092d9190612ed3565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109b3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109d79190612ed3565b6040518363ffffffff1660e01b81526004016109f4929190612efe565b6020604051808303815f875af1158015610a10573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a349190612ed3565b60175f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610abb30610ce1565b5f80610ac5610fd6565b426040518863ffffffff1660e01b8152600401610ae796959493929190612f67565b60606040518083038185885af1158015610b03573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610b289190612fda565b50505060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610bc892919061302a565b6020604051808303815f875af1158015610be4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c08919061307b565b506001601760166101000a81548160ff0219169083151502179055506001601760146101000a81548160ff021916908315150217905550565b5f6008905090565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c8a611580565b73ffffffffffffffffffffffffffffffffffffffff1614610ca9575f80fd5b5f610cb330610ce1565b90505f811115610cc757610cc6816121c7565b5b5f4790505f811115610cdd57610cdc81612432565b5b5050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610d2f611580565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db290612e39565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f610e7f8261253c565b60019050919050565b610e90611580565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1390612e39565b60405180910390fd5b6008600a610f2a9190612d64565b633b9aca00610f399190612dae565b6012819055506008600a610f4d9190612d64565b633b9aca00610f5c9190612dae565b6013819055505f60065f6101000a81548160ff0219169083151502179055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6008600a610faa9190612d64565b633b9aca00610fb99190612dae565b604051610fc69190612928565b60405180910390a1565b60125481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60135481565b60606040518060400160405280600581526020017f5461626c65000000000000000000000000000000000000000000000000000000815250905090565b5f8082036110c3578273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016110819190612a2a565b602060405180830381865afa15801561109c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110c091906130a6565b91505b7fda2bc2bedd1f85b5a59d5dbbd6684ff877ef916994a16ec08813101e99ace65f83836040516110f492919061302a565b60405180910390a18273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401611159929190613123565b6020604051808303815f875af1158015611175573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611199919061307b565b905092915050565b6111a9611580565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611235576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122c90612e39565b60405180910390fd5b5f5b81518110156112c1575f60045f8484815181106112575761125661314a565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806112b990613177565b915050611237565b5050565b5f6112d86112d1611580565b848461174a565b6001905092915050565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b60145481565b60065f9054906101000a900460ff1681565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661140f611580565b73ffffffffffffffffffffffffffffffffffffffff161461142e575f80fd5b600c5481111580156114425750600d548111155b61144a575f80fd5b80600c8190555080600d8190555050565b611463611580565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e690612e39565b60405180910390fd5b5f5b815181101561157c57600160045f8484815181106115125761151161314a565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550808061157490613177565b9150506114f1565b5050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036115f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ec9061322e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611663576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165a906132bc565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161173d9190612928565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036117b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117af9061334a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611826576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181d906133d8565b60405180910390fd5b5f8111611868576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185f90613466565b60405180910390fd5b5f611871610fd6565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156118df57506118af610fd6565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611eb55760045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611982575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b61198a575f80fd5b6119c660646119b8600e54601154116119a557600a546119a9565b600c545b8561258190919063ffffffff16565b6125f890919063ffffffff16565b905060065f9054906101000a900460ff1615611b4e5760165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611a86575060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611b4d574360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410611b0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b019061351a565b60405180910390fd5b4360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611bf7575060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611c4a575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611d0457601254821115611c94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8b90613582565b60405180910390fd5b60135482611ca185610ce1565b611cab91906135a0565b1115611cec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce39061361d565b60405180910390fd5b60115f815480929190611cfe90613177565b91905055505b60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611d8c57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611dd057611dcd6064611dbf600f5460115411611dac57600b54611db0565b600d545b8561258190919063ffffffff16565b6125f890919063ffffffff16565b90505b5f611dda30610ce1565b9050601760159054906101000a900460ff16158015611e45575060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611e5d5750601760169054906101000a900460ff165b8015611e6a575060145481115b8015611e795750601054601154115b15611eb357611e9b611e9684611e9184601554612641565b612641565b6121c7565b5f4790505f811115611eb157611eb047612432565b5b505b505b5f811115611fb457611f0d8160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461265990919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611fab9190612928565b60405180910390a35b6120048260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546126b690919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506120a761205b82846126b690919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461265990919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61214a84866126b690919063ffffffff16565b6040516121579190612928565b60405180910390a350505050565b5f8383111582906121ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a391906127ea565b60405180910390fd5b505f83856121ba919061363b565b9050809150509392505050565b6001601760156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff8111156121fe576121fd612a47565b5b60405190808252806020026020018201604052801561222c5781602001602082028036833780820191505090505b50905030815f815181106122435761224261314a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122e7573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061230b9190612ed3565b8160018151811061231f5761231e61314a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506123853060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611587565b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016123e7959493929190613725565b5f604051808303815f87803b1580156123fe575f80fd5b505af1158015612410573d5f803e3d5ffd5b50505050505f601760156101000a81548160ff02191690831515021790555050565b5f6064600854836124439190612dae565b61244d91906137aa565b90505f6064600954846124609190612dae565b61246a91906137aa565b9050600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8390811502906040515f60405180830381858888f193505050501580156124d1573d5f803e3d5ffd5b5060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612536573d5f803e3d5ffd5b50505050565b5f810361257e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257590613824565b60405180910390fd5b50565b5f808303612591575f90506125f2565b5f828461259e9190612dae565b90508284826125ad91906137aa565b146125ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125e4906138b2565b60405180910390fd5b809150505b92915050565b5f61263983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506126ff565b905092915050565b5f81831161264f5782612651565b815b905092915050565b5f80828461266791906135a0565b9050838110156126ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a39061391a565b60405180910390fd5b8091505092915050565b5f6126f783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612165565b905092915050565b5f8083118290612745576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161273c91906127ea565b60405180910390fd5b505f838561275391906137aa565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561279757808201518184015260208101905061277c565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6127bc82612760565b6127c6818561276a565b93506127d681856020860161277a565b6127df816127a2565b840191505092915050565b5f6020820190508181035f83015261280281846127b2565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6128448261281b565b9050919050565b6128548161283a565b811461285e575f80fd5b50565b5f8135905061286f8161284b565b92915050565b5f819050919050565b61288781612875565b8114612891575f80fd5b50565b5f813590506128a28161287e565b92915050565b5f80604083850312156128be576128bd612813565b5b5f6128cb85828601612861565b92505060206128dc85828601612894565b9150509250929050565b5f8115159050919050565b6128fa816128e6565b82525050565b5f6020820190506129135f8301846128f1565b92915050565b61292281612875565b82525050565b5f60208201905061293b5f830184612919565b92915050565b5f805f6060848603121561295857612957612813565b5b5f61296586828701612861565b935050602061297686828701612861565b925050604061298786828701612894565b9150509250925092565b5f60ff82169050919050565b6129a681612991565b82525050565b5f6020820190506129bf5f83018461299d565b92915050565b5f602082840312156129da576129d9612813565b5b5f6129e784828501612861565b91505092915050565b5f60208284031215612a0557612a04612813565b5b5f612a1284828501612894565b91505092915050565b612a248161283a565b82525050565b5f602082019050612a3d5f830184612a1b565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612a7d826127a2565b810181811067ffffffffffffffff82111715612a9c57612a9b612a47565b5b80604052505050565b5f612aae61280a565b9050612aba8282612a74565b919050565b5f67ffffffffffffffff821115612ad957612ad8612a47565b5b602082029050602081019050919050565b5f80fd5b5f612b00612afb84612abf565b612aa5565b90508083825260208201905060208402830185811115612b2357612b22612aea565b5b835b81811015612b4c5780612b388882612861565b845260208401935050602081019050612b25565b5050509392505050565b5f82601f830112612b6a57612b69612a43565b5b8135612b7a848260208601612aee565b91505092915050565b5f60208284031215612b9857612b97612813565b5b5f82013567ffffffffffffffff811115612bb557612bb4612817565b5b612bc184828501612b56565b91505092915050565b5f8060408385031215612be057612bdf612813565b5b5f612bed85828601612861565b9250506020612bfe85828601612861565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115612c8a57808604811115612c6657612c65612c08565b5b6001851615612c755780820291505b8081029050612c8385612c35565b9450612c4a565b94509492505050565b5f82612ca25760019050612d5d565b81612caf575f9050612d5d565b8160018114612cc55760028114612ccf57612cfe565b6001915050612d5d565b60ff841115612ce157612ce0612c08565b5b8360020a915084821115612cf857612cf7612c08565b5b50612d5d565b5060208310610133831016604e8410600b8410161715612d335782820a905083811115612d2e57612d2d612c08565b5b612d5d565b612d408484846001612c41565b92509050818404811115612d5757612d56612c08565b5b81810290505b9392505050565b5f612d6e82612875565b9150612d7983612991565b9250612da67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612c93565b905092915050565b5f612db882612875565b9150612dc383612875565b9250828202612dd181612875565b91508282048414831517612de857612de7612c08565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612e2360208361276a565b9150612e2e82612def565b602082019050919050565b5f6020820190508181035f830152612e5081612e17565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f612e8b60178361276a565b9150612e9682612e57565b602082019050919050565b5f6020820190508181035f830152612eb881612e7f565b9050919050565b5f81519050612ecd8161284b565b92915050565b5f60208284031215612ee857612ee7612813565b5b5f612ef584828501612ebf565b91505092915050565b5f604082019050612f115f830185612a1b565b612f1e6020830184612a1b565b9392505050565b5f819050919050565b5f819050919050565b5f612f51612f4c612f4784612f25565b612f2e565b612875565b9050919050565b612f6181612f37565b82525050565b5f60c082019050612f7a5f830189612a1b565b612f876020830188612919565b612f946040830187612f58565b612fa16060830186612f58565b612fae6080830185612a1b565b612fbb60a0830184612919565b979650505050505050565b5f81519050612fd48161287e565b92915050565b5f805f60608486031215612ff157612ff0612813565b5b5f612ffe86828701612fc6565b935050602061300f86828701612fc6565b925050604061302086828701612fc6565b9150509250925092565b5f60408201905061303d5f830185612a1b565b61304a6020830184612919565b9392505050565b61305a816128e6565b8114613064575f80fd5b50565b5f8151905061307581613051565b92915050565b5f602082840312156130905761308f612813565b5b5f61309d84828501613067565b91505092915050565b5f602082840312156130bb576130ba612813565b5b5f6130c884828501612fc6565b91505092915050565b5f6130eb6130e66130e18461281b565b612f2e565b61281b565b9050919050565b5f6130fc826130d1565b9050919050565b5f61310d826130f2565b9050919050565b61311d81613103565b82525050565b5f6040820190506131365f830185613114565b6131436020830184612919565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f61318182612875565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036131b3576131b2612c08565b5b600182019050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61321860248361276a565b9150613223826131be565b604082019050919050565b5f6020820190508181035f8301526132458161320c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6132a660228361276a565b91506132b18261324c565b604082019050919050565b5f6020820190508181035f8301526132d38161329a565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61333460258361276a565b915061333f826132da565b604082019050919050565b5f6020820190508181035f83015261336181613328565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6133c260238361276a565b91506133cd82613368565b604082019050919050565b5f6020820190508181035f8301526133ef816133b6565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f61345060298361276a565b915061345b826133f6565b604082019050919050565b5f6020820190508181035f83015261347d81613444565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c5f8201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b5f61350460498361276a565b915061350f82613484565b606082019050919050565b5f6020820190508181035f830152613531816134f8565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f61356c60198361276a565b915061357782613538565b602082019050919050565b5f6020820190508181035f83015261359981613560565b9050919050565b5f6135aa82612875565b91506135b583612875565b92508282019050808211156135cd576135cc612c08565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f613607601a8361276a565b9150613612826135d3565b602082019050919050565b5f6020820190508181035f830152613634816135fb565b9050919050565b5f61364582612875565b915061365083612875565b925082820390508181111561366857613667612c08565b5b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6136a08161283a565b82525050565b5f6136b18383613697565b60208301905092915050565b5f602082019050919050565b5f6136d38261366e565b6136dd8185613678565b93506136e883613688565b805f5b838110156137185781516136ff88826136a6565b975061370a836136bd565b9250506001810190506136eb565b5085935050505092915050565b5f60a0820190506137385f830188612919565b6137456020830187612f58565b818103604083015261375781866136c9565b90506137666060830185612a1b565b6137736080830184612919565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6137b482612875565b91506137bf83612875565b9250826137cf576137ce61377d565b5b828204905092915050565b7f43616e27742076657269667920300000000000000000000000000000000000005f82015250565b5f61380e600e8361276a565b9150613819826137da565b602082019050919050565b5f6020820190508181035f83015261383b81613802565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f61389c60218361276a565b91506138a782613842565b604082019050919050565b5f6020820190508181035f8301526138c981613890565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613904601b8361276a565b915061390f826138d0565b602082019050919050565b5f6020820190508181035f830152613931816138f8565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122059f5de75d8fece9838d8c9035af333d767116ba5203320d1c38ad5b7fb8a71f264736f6c63430008140033
Deployed Bytecode
0x608060405260043610610169575f3560e01c80637d1db4a5116100d0578063a9059cbb11610089578063c876d0b911610063578063c876d0b914610512578063dd62ed3e1461053c578063ec1f3f6314610578578063fb8abdc4146105a057610170565b8063a9059cbb14610470578063b1a4e0dc146104ac578063bf474bed146104e857610170565b80637d1db4a5146103645780638da5cb5b1461038e5780638f9a55c0146103b857806395d89b41146103e2578063960427a41461040c578063a4034b661461044857610170565b8063313ce56711610122578063313ce5671461028057806351bc3c85146102aa57806370a08231146102c0578063715018a6146102fc578063716c8abd14610312578063751039fc1461034e57610170565b806306fdde0314610174578063095ea7b31461019e5780630faee56f146101da57806318160ddd1461020457806323b872dd1461022e5780633028436f1461026a57610170565b3661017057005b5f80fd5b34801561017f575f80fd5b506101886105c8565b60405161019591906127ea565b60405180910390f35b3480156101a9575f80fd5b506101c460048036038101906101bf91906128a8565b610605565b6040516101d19190612900565b60405180910390f35b3480156101e5575f80fd5b506101ee610622565b6040516101fb9190612928565b60405180910390f35b34801561020f575f80fd5b50610218610628565b6040516102259190612928565b60405180910390f35b348015610239575f80fd5b50610254600480360381019061024f9190612941565b61064b565b6040516102619190612900565b60405180910390f35b348015610275575f80fd5b5061027e61071f565b005b34801561028b575f80fd5b50610294610c41565b6040516102a191906129ac565b60405180910390f35b3480156102b5575f80fd5b506102be610c49565b005b3480156102cb575f80fd5b506102e660048036038101906102e191906129c5565b610ce1565b6040516102f39190612928565b60405180910390f35b348015610307575f80fd5b50610310610d27565b005b34801561031d575f80fd5b50610338600480360381019061033391906129f0565b610e75565b6040516103459190612900565b60405180910390f35b348015610359575f80fd5b50610362610e88565b005b34801561036f575f80fd5b50610378610fd0565b6040516103859190612928565b60405180910390f35b348015610399575f80fd5b506103a2610fd6565b6040516103af9190612a2a565b60405180910390f35b3480156103c3575f80fd5b506103cc610ffd565b6040516103d99190612928565b60405180910390f35b3480156103ed575f80fd5b506103f6611003565b60405161040391906127ea565b60405180910390f35b348015610417575f80fd5b50610432600480360381019061042d91906128a8565b611040565b60405161043f9190612900565b60405180910390f35b348015610453575f80fd5b5061046e60048036038101906104699190612b83565b6111a1565b005b34801561047b575f80fd5b50610496600480360381019061049191906128a8565b6112c5565b6040516104a39190612900565b60405180910390f35b3480156104b7575f80fd5b506104d260048036038101906104cd91906129c5565b6112e2565b6040516104df9190612900565b60405180910390f35b3480156104f3575f80fd5b506104fc611334565b6040516105099190612928565b60405180910390f35b34801561051d575f80fd5b5061052661133a565b6040516105339190612900565b60405180910390f35b348015610547575f80fd5b50610562600480360381019061055d9190612bca565b61134c565b60405161056f9190612928565b60405180910390f35b348015610583575f80fd5b5061059e600480360381019061059991906129f0565b6113ce565b005b3480156105ab575f80fd5b506105c660048036038101906105c19190612b83565b61145b565b005b60606040518060400160405280600581526020017f5461626c65000000000000000000000000000000000000000000000000000000815250905090565b5f610618610611611580565b8484611587565b6001905092915050565b60155481565b5f6008600a6106379190612d64565b633b9aca006106469190612dae565b905090565b5f61065784848461174a565b61071484610663611580565b61070f856040518060600160405280602881526020016139396028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6106c6611580565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546121659092919063ffffffff16565b611587565b600190509392505050565b610727611580565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107aa90612e39565b60405180910390fd5b601760149054906101000a900460ff1615610803576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107fa90612ea1565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60165f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061089f3060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166008600a61088b9190612d64565b633b9aca0061089a9190612dae565b611587565b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610909573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061092d9190612ed3565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109b3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109d79190612ed3565b6040518363ffffffff1660e01b81526004016109f4929190612efe565b6020604051808303815f875af1158015610a10573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a349190612ed3565b60175f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610abb30610ce1565b5f80610ac5610fd6565b426040518863ffffffff1660e01b8152600401610ae796959493929190612f67565b60606040518083038185885af1158015610b03573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610b289190612fda565b50505060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610bc892919061302a565b6020604051808303815f875af1158015610be4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c08919061307b565b506001601760166101000a81548160ff0219169083151502179055506001601760146101000a81548160ff021916908315150217905550565b5f6008905090565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c8a611580565b73ffffffffffffffffffffffffffffffffffffffff1614610ca9575f80fd5b5f610cb330610ce1565b90505f811115610cc757610cc6816121c7565b5b5f4790505f811115610cdd57610cdc81612432565b5b5050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610d2f611580565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db290612e39565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f610e7f8261253c565b60019050919050565b610e90611580565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1390612e39565b60405180910390fd5b6008600a610f2a9190612d64565b633b9aca00610f399190612dae565b6012819055506008600a610f4d9190612d64565b633b9aca00610f5c9190612dae565b6013819055505f60065f6101000a81548160ff0219169083151502179055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6008600a610faa9190612d64565b633b9aca00610fb99190612dae565b604051610fc69190612928565b60405180910390a1565b60125481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60135481565b60606040518060400160405280600581526020017f5461626c65000000000000000000000000000000000000000000000000000000815250905090565b5f8082036110c3578273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016110819190612a2a565b602060405180830381865afa15801561109c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110c091906130a6565b91505b7fda2bc2bedd1f85b5a59d5dbbd6684ff877ef916994a16ec08813101e99ace65f83836040516110f492919061302a565b60405180910390a18273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401611159929190613123565b6020604051808303815f875af1158015611175573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611199919061307b565b905092915050565b6111a9611580565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611235576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122c90612e39565b60405180910390fd5b5f5b81518110156112c1575f60045f8484815181106112575761125661314a565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806112b990613177565b915050611237565b5050565b5f6112d86112d1611580565b848461174a565b6001905092915050565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b60145481565b60065f9054906101000a900460ff1681565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661140f611580565b73ffffffffffffffffffffffffffffffffffffffff161461142e575f80fd5b600c5481111580156114425750600d548111155b61144a575f80fd5b80600c8190555080600d8190555050565b611463611580565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e690612e39565b60405180910390fd5b5f5b815181101561157c57600160045f8484815181106115125761151161314a565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550808061157490613177565b9150506114f1565b5050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036115f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ec9061322e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611663576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165a906132bc565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161173d9190612928565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036117b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117af9061334a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611826576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181d906133d8565b60405180910390fd5b5f8111611868576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185f90613466565b60405180910390fd5b5f611871610fd6565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156118df57506118af610fd6565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611eb55760045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611982575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b61198a575f80fd5b6119c660646119b8600e54601154116119a557600a546119a9565b600c545b8561258190919063ffffffff16565b6125f890919063ffffffff16565b905060065f9054906101000a900460ff1615611b4e5760165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611a86575060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611b4d574360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410611b0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b019061351a565b60405180910390fd5b4360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611bf7575060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611c4a575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611d0457601254821115611c94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8b90613582565b60405180910390fd5b60135482611ca185610ce1565b611cab91906135a0565b1115611cec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce39061361d565b60405180910390fd5b60115f815480929190611cfe90613177565b91905055505b60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611d8c57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611dd057611dcd6064611dbf600f5460115411611dac57600b54611db0565b600d545b8561258190919063ffffffff16565b6125f890919063ffffffff16565b90505b5f611dda30610ce1565b9050601760159054906101000a900460ff16158015611e45575060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611e5d5750601760169054906101000a900460ff165b8015611e6a575060145481115b8015611e795750601054601154115b15611eb357611e9b611e9684611e9184601554612641565b612641565b6121c7565b5f4790505f811115611eb157611eb047612432565b5b505b505b5f811115611fb457611f0d8160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461265990919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611fab9190612928565b60405180910390a35b6120048260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546126b690919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506120a761205b82846126b690919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461265990919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61214a84866126b690919063ffffffff16565b6040516121579190612928565b60405180910390a350505050565b5f8383111582906121ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a391906127ea565b60405180910390fd5b505f83856121ba919061363b565b9050809150509392505050565b6001601760156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff8111156121fe576121fd612a47565b5b60405190808252806020026020018201604052801561222c5781602001602082028036833780820191505090505b50905030815f815181106122435761224261314a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122e7573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061230b9190612ed3565b8160018151811061231f5761231e61314a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506123853060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611587565b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016123e7959493929190613725565b5f604051808303815f87803b1580156123fe575f80fd5b505af1158015612410573d5f803e3d5ffd5b50505050505f601760156101000a81548160ff02191690831515021790555050565b5f6064600854836124439190612dae565b61244d91906137aa565b90505f6064600954846124609190612dae565b61246a91906137aa565b9050600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8390811502906040515f60405180830381858888f193505050501580156124d1573d5f803e3d5ffd5b5060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612536573d5f803e3d5ffd5b50505050565b5f810361257e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257590613824565b60405180910390fd5b50565b5f808303612591575f90506125f2565b5f828461259e9190612dae565b90508284826125ad91906137aa565b146125ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125e4906138b2565b60405180910390fd5b809150505b92915050565b5f61263983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506126ff565b905092915050565b5f81831161264f5782612651565b815b905092915050565b5f80828461266791906135a0565b9050838110156126ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a39061391a565b60405180910390fd5b8091505092915050565b5f6126f783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612165565b905092915050565b5f8083118290612745576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161273c91906127ea565b60405180910390fd5b505f838561275391906137aa565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561279757808201518184015260208101905061277c565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6127bc82612760565b6127c6818561276a565b93506127d681856020860161277a565b6127df816127a2565b840191505092915050565b5f6020820190508181035f83015261280281846127b2565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6128448261281b565b9050919050565b6128548161283a565b811461285e575f80fd5b50565b5f8135905061286f8161284b565b92915050565b5f819050919050565b61288781612875565b8114612891575f80fd5b50565b5f813590506128a28161287e565b92915050565b5f80604083850312156128be576128bd612813565b5b5f6128cb85828601612861565b92505060206128dc85828601612894565b9150509250929050565b5f8115159050919050565b6128fa816128e6565b82525050565b5f6020820190506129135f8301846128f1565b92915050565b61292281612875565b82525050565b5f60208201905061293b5f830184612919565b92915050565b5f805f6060848603121561295857612957612813565b5b5f61296586828701612861565b935050602061297686828701612861565b925050604061298786828701612894565b9150509250925092565b5f60ff82169050919050565b6129a681612991565b82525050565b5f6020820190506129bf5f83018461299d565b92915050565b5f602082840312156129da576129d9612813565b5b5f6129e784828501612861565b91505092915050565b5f60208284031215612a0557612a04612813565b5b5f612a1284828501612894565b91505092915050565b612a248161283a565b82525050565b5f602082019050612a3d5f830184612a1b565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612a7d826127a2565b810181811067ffffffffffffffff82111715612a9c57612a9b612a47565b5b80604052505050565b5f612aae61280a565b9050612aba8282612a74565b919050565b5f67ffffffffffffffff821115612ad957612ad8612a47565b5b602082029050602081019050919050565b5f80fd5b5f612b00612afb84612abf565b612aa5565b90508083825260208201905060208402830185811115612b2357612b22612aea565b5b835b81811015612b4c5780612b388882612861565b845260208401935050602081019050612b25565b5050509392505050565b5f82601f830112612b6a57612b69612a43565b5b8135612b7a848260208601612aee565b91505092915050565b5f60208284031215612b9857612b97612813565b5b5f82013567ffffffffffffffff811115612bb557612bb4612817565b5b612bc184828501612b56565b91505092915050565b5f8060408385031215612be057612bdf612813565b5b5f612bed85828601612861565b9250506020612bfe85828601612861565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115612c8a57808604811115612c6657612c65612c08565b5b6001851615612c755780820291505b8081029050612c8385612c35565b9450612c4a565b94509492505050565b5f82612ca25760019050612d5d565b81612caf575f9050612d5d565b8160018114612cc55760028114612ccf57612cfe565b6001915050612d5d565b60ff841115612ce157612ce0612c08565b5b8360020a915084821115612cf857612cf7612c08565b5b50612d5d565b5060208310610133831016604e8410600b8410161715612d335782820a905083811115612d2e57612d2d612c08565b5b612d5d565b612d408484846001612c41565b92509050818404811115612d5757612d56612c08565b5b81810290505b9392505050565b5f612d6e82612875565b9150612d7983612991565b9250612da67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612c93565b905092915050565b5f612db882612875565b9150612dc383612875565b9250828202612dd181612875565b91508282048414831517612de857612de7612c08565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612e2360208361276a565b9150612e2e82612def565b602082019050919050565b5f6020820190508181035f830152612e5081612e17565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f612e8b60178361276a565b9150612e9682612e57565b602082019050919050565b5f6020820190508181035f830152612eb881612e7f565b9050919050565b5f81519050612ecd8161284b565b92915050565b5f60208284031215612ee857612ee7612813565b5b5f612ef584828501612ebf565b91505092915050565b5f604082019050612f115f830185612a1b565b612f1e6020830184612a1b565b9392505050565b5f819050919050565b5f819050919050565b5f612f51612f4c612f4784612f25565b612f2e565b612875565b9050919050565b612f6181612f37565b82525050565b5f60c082019050612f7a5f830189612a1b565b612f876020830188612919565b612f946040830187612f58565b612fa16060830186612f58565b612fae6080830185612a1b565b612fbb60a0830184612919565b979650505050505050565b5f81519050612fd48161287e565b92915050565b5f805f60608486031215612ff157612ff0612813565b5b5f612ffe86828701612fc6565b935050602061300f86828701612fc6565b925050604061302086828701612fc6565b9150509250925092565b5f60408201905061303d5f830185612a1b565b61304a6020830184612919565b9392505050565b61305a816128e6565b8114613064575f80fd5b50565b5f8151905061307581613051565b92915050565b5f602082840312156130905761308f612813565b5b5f61309d84828501613067565b91505092915050565b5f602082840312156130bb576130ba612813565b5b5f6130c884828501612fc6565b91505092915050565b5f6130eb6130e66130e18461281b565b612f2e565b61281b565b9050919050565b5f6130fc826130d1565b9050919050565b5f61310d826130f2565b9050919050565b61311d81613103565b82525050565b5f6040820190506131365f830185613114565b6131436020830184612919565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f61318182612875565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036131b3576131b2612c08565b5b600182019050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61321860248361276a565b9150613223826131be565b604082019050919050565b5f6020820190508181035f8301526132458161320c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6132a660228361276a565b91506132b18261324c565b604082019050919050565b5f6020820190508181035f8301526132d38161329a565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61333460258361276a565b915061333f826132da565b604082019050919050565b5f6020820190508181035f83015261336181613328565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6133c260238361276a565b91506133cd82613368565b604082019050919050565b5f6020820190508181035f8301526133ef816133b6565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f61345060298361276a565b915061345b826133f6565b604082019050919050565b5f6020820190508181035f83015261347d81613444565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c5f8201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b5f61350460498361276a565b915061350f82613484565b606082019050919050565b5f6020820190508181035f830152613531816134f8565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f61356c60198361276a565b915061357782613538565b602082019050919050565b5f6020820190508181035f83015261359981613560565b9050919050565b5f6135aa82612875565b91506135b583612875565b92508282019050808211156135cd576135cc612c08565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f613607601a8361276a565b9150613612826135d3565b602082019050919050565b5f6020820190508181035f830152613634816135fb565b9050919050565b5f61364582612875565b915061365083612875565b925082820390508181111561366857613667612c08565b5b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6136a08161283a565b82525050565b5f6136b18383613697565b60208301905092915050565b5f602082019050919050565b5f6136d38261366e565b6136dd8185613678565b93506136e883613688565b805f5b838110156137185781516136ff88826136a6565b975061370a836136bd565b9250506001810190506136eb565b5085935050505092915050565b5f60a0820190506137385f830188612919565b6137456020830187612f58565b818103604083015261375781866136c9565b90506137666060830185612a1b565b6137736080830184612919565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6137b482612875565b91506137bf83612875565b9250826137cf576137ce61377d565b5b828204905092915050565b7f43616e27742076657269667920300000000000000000000000000000000000005f82015250565b5f61380e600e8361276a565b9150613819826137da565b602082019050919050565b5f6020820190508181035f83015261383b81613802565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f61389c60218361276a565b91506138a782613842565b604082019050919050565b5f6020820190508181035f8301526138c981613890565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613904601b8361276a565b915061390f826138d0565b602082019050919050565b5f6020820190508181035f830152613931816138f8565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122059f5de75d8fece9838d8c9035af333d767116ba5203320d1c38ad5b7fb8a71f264736f6c63430008140033
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.