ERC-20
Deflationary Token
Overview
Max Total Supply
4,875.683497 ABN
Holders
24 (0.00%)
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 6 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
AutoBurnToken
Compiler Version
v0.7.6+commit.7338295f
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-01-26 */ /* ABN = AutoBurn token Deflationary. Low gas. Made simple. This token has decreasing supply and increasing price achieved by 3% burn and 3% added to liquidity on each transaction except wallet to wallet transactions (non-contract). This is done by direct balance adjustments which are much cheaper than calling external methods for sell, add liquidity and mint LP tokens functions on each trade. The pool is verified to stay in sync despite no additional LP tokens are minted or burned, proportionally rewarding any additional liquidity providers. Price is driven up every day by burning 3% of ABN from liquidity pool while keeping WETH there intact. Wallet and other pool balances are not daily burn, only WETH-ABN pool is affected. Net size of a single transaction is limited to 1% of available supply, no limit on balances and no limit for wallet to wallet transactions (non-contract). If you get "error:undefined" on swap or "confirm" button is dead: Check slippage, increase to 7%. Set exact amount for ABN, not for the counterparty. Check token available supply, 1% bought at once may be later sold in 2 or more transactions if some supply was burn in meantime. Tip to remove liquidity: Save one transaction fee by removing liquidity to WETH instead of ETH. Disclaimer: This is an experimental project. DYOR and read contract code thoroughly before trading. Check liquidity distribution and lock duration. Deployer has no liability, direct or indirectly implied, of any loss or damage caused by bugs in code or EVM, Solidity vulnerabilities, bot activity or malicious behavior of token holders. */ //SPDX-License-Identifier: UNLICENSED // License: Parts different from open-zeppelin implementations are copyrighted. Any clones should send a 0.3% of tx value to deployer of this contract provided the tx is not considered feeless here. pragma solidity =0.7.6; abstract contract Context { function _msgSender() internal view virtual returns (address payable) { return msg.sender; } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } 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); function increaseAllowance(address spender, uint256 addedValue) external returns (bool); function decreaseAllowance(address spender, uint256 subtractedValue) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); function burn(uint256 amount) external returns (bool); function burnFrom(address account, uint256 amount) external returns (bool); } interface UNIV2Sync { function sync() external; } interface IWETH { function deposit() external payable; function balanceOf(address _owner) external returns (uint256); function transfer(address _to, uint256 _value) external returns (bool); function withdraw(uint256 _amount) external; } 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; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } library Address { function isContract(address account) internal view returns (bool) { // According to EIP-1052, 0x0 is the value returned for not-yet created accounts // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned // for accounts without code, i.e. `keccak256('')` bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; // solhint-disable-next-line no-inline-assembly assembly { codehash := extcodehash(account) } return (codehash != accountHash && codehash != 0x0); } function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return _functionCallWithValue(target, data, 0, errorMessage); } function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); return _functionCallWithValue(target, data, value, errorMessage); } function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) { require(isContract(target), "Address: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.call{ value: weiValue }(data); if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly // solhint-disable-next-line no-inline-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } /* * An {Approval} event is emitted on calls to {transferFrom}. * This allows applications to reconstruct the allowance for all accounts just * by listening to said events. Other implementations of the EIP may not emit * these events, as it isn't required by the specification. * * Finally, the non-standard {decreaseAllowance} and {increaseAllowance} * functions have been added to mitigate the well-known issues around setting * allowances. See {IERC20-approve}. */ contract DeflationaryERC20 is Context, IERC20 { using SafeMath for uint256; using Address for address; mapping (address => uint256) private _balances; mapping (address => mapping (address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; uint8 private _decimals; address private _deployer; uint256 public lastPoolBurnTime; uint256 public epoch; // Transaction Fees: uint8 public txFee = 6; // total in %, half will burn and half adds to liquidity address public feeDistributor; // fees are sent to fee distributor = uniswap pool address public wethContract; // wrap ethers sent to contract to increase liquidity constructor (string memory __name, string memory __symbol) { _name = __name; _symbol = __symbol; _decimals = 6; _deployer = tx.origin; epoch = 86400; wethContract=0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2; lastPoolBurnTime = block.timestamp.div(epoch).mul(epoch); //set time part to midnight UTC } function name() public view returns (string memory) { return _name; } function symbol() public view returns (string memory) { return _symbol; } function decimals() public view returns (uint8) { return _decimals; } function totalSupply() public view override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) { _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); _transfer(sender, recipient, amount); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual override returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual override returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } function countdownPoolBurnDue() public view returns (uint256) { return ((lastPoolBurnTime.add(epoch))>block.timestamp?(lastPoolBurnTime.add(epoch).sub(block.timestamp)):0); } //Important: Due to checks made during swap process avoid calling this method inside a swap transaction. function PoolBurnAndSync() public virtual returns (bool) { // Burns any token balance donated to the contract (always) if (_balances[address(this)] > 0) { _burn(address(this),_balances[address(this)]); } //Convert any ETH to WETH (always). uint256 amountETH = address(this).balance; if (amountETH > 0) { IWETH(wethContract).deposit{value : amountETH}(); } //Checks pool address and time since last pool burn if (countdownPoolBurnDue() == 0 && feeDistributor != address(0)) { lastPoolBurnTime = lastPoolBurnTime.add(epoch); //Burns 3% from pool address if (_balances[feeDistributor] > 100) { _burn(feeDistributor,_balances[feeDistributor].mul(3).div(100)); } } //Calls sync anytime it's not a swap. Swaps sync at the end automatically. if(feeDistributor != address(0)) { //Gets weth balance uint256 amountWETH = IWETH(wethContract).balanceOf(address(this)); //Sends weth to pool if (amountWETH > 0) { IWETH(wethContract).transfer(feeDistributor, amountWETH); } UNIV2Sync(feeDistributor).sync(); //important to reflect updated price } return true; } // assign a new pool address, enforce deflationary features and renounce ownership function setFeeDistributor(address _distributor) public { require(tx.origin == _deployer, "Not from deployer"); require(feeDistributor == address(0), "Pool: Address immutable once set"); feeDistributor = _distributor; } // to caclulate the amounts for recipient and distributer after fees have been applied function calculateAmountsAfterFee( address sender, address recipient, uint256 amount ) public view returns (uint256 transferToAmount, uint256 transferToFeeDistributorAmount, uint256 burnAmount) { // check if fees should apply to this transaction if (sender.isContract() || recipient.isContract()) { // calculate fees and amounts if any address is an active contract uint256 fee = amount.mul(txFee).div(100); uint256 burnFee = fee.div(2); return (amount.sub(fee), fee.sub(burnFee),burnFee); } return (amount, 0, 0); } function burnFrom(address account,uint256 amount) public virtual override returns (bool) { _approve(account, _msgSender(), _allowances[account][_msgSender()].sub(amount, "ERC20: burn amount exceeds allowance")); _burn(account, amount); return true; } function burn(uint256 amount) public virtual override returns (bool) { _burn(_msgSender(), amount); return true; } function _transfer(address sender, address recipient, uint256 amount) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); require(amount >= 100, "amount below 100 base units, avoiding underflows"); _beforeTokenTransfer(sender, recipient, amount); // calculate fee: (uint256 transferToAmount, uint256 transferToFeeDistributorAmount,uint256 burnAmount) = calculateAmountsAfterFee(sender, recipient, amount); // subtract net amount, keep amount for fees to be subtracted later _balances[sender] = _balances[sender].sub(transferToAmount, "ERC20: transfer amount exceeds balance"); // update recipients balance: _balances[recipient] = _balances[recipient].add(transferToAmount); emit Transfer(sender, recipient, transferToAmount); // update pool balance, limit max tx once pool contract is known and funded if(transferToFeeDistributorAmount > 0 && feeDistributor != address(0)){ require(_totalSupply.div(transferToAmount) >= 99, "max single trade 1% of current total supply"); _burn(sender,burnAmount); _balances[sender] = _balances[sender].sub(transferToFeeDistributorAmount, "ERC20: fee transfer amount exceeds remaining balance"); _balances[feeDistributor] = _balances[feeDistributor].add(transferToFeeDistributorAmount); emit Transfer(sender, feeDistributor, transferToFeeDistributorAmount); //Sync is made automatically at the end of swap transaction, doing it earlier reverts the swap } else { //Since there may be relayers like 1inch allow sync on feeless txs only PoolBurnAndSync(); } } function _mint(address account, uint256 amount) internal virtual { require(_totalSupply == 0, "Mint: Not an initial supply mint"); require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply = _totalSupply.add(amount); _balances[account] = _balances[account].add(amount); emit Transfer(address(0), account, amount); } function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); if(amount != 0) { _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance"); _totalSupply = _totalSupply.sub(amount); emit Transfer(account, address(0), amount); } } function _approve(address owner, address spender, uint256 amount) internal virtual { 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); } /** * Hook that is called before any transfer of tokens. This includes minting and burning. * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual { } //Before sennding ether to this contract ensure gas cost is estimated properly receive() external payable { PoolBurnAndSync(); } } /** * ABN is a token designed to implement pool inflation and supply deflation using simplified way of transferring or burning * fees manually and then forcing Uniswap pool to resync balances instead of costly sell, add liquidity and mint LP tokens. * The ABN Token itself is just a standard ERC20, with: * No minting. * Public burning. * Transfer fee applied. Fixed to 3% into pool + 3% burn. */ contract AutoBurnToken is DeflationaryERC20 { constructor() DeflationaryERC20("AutoBurn", "ABN") { // maximum supply = 100000 whole units with decimals = 6 _mint(msg.sender, 100000e6); } }
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":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":"PoolBurnAndSync","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":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","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":"calculateAmountsAfterFee","outputs":[{"internalType":"uint256","name":"transferToAmount","type":"uint256"},{"internalType":"uint256","name":"transferToFeeDistributorAmount","type":"uint256"},{"internalType":"uint256","name":"burnAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"countdownPoolBurnDue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"epoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeDistributor","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lastPoolBurnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_distributor","type":"address"}],"name":"setFeeDistributor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":[],"name":"txFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"wethContract","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526008805460ff191660061790553480156200001e57600080fd5b506040518060400160405280600881526020016720baba37a13ab93760c11b8152506040518060400160405280600381526020016220a12760e91b81525081600390805190602001906200007492919062000447565b5080516200008a90600490602084019062000447565b5060058054600660ff1990911617610100600160a81b03191661010032021790556201518060078190556009805473c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b03199091161790556200010d90620000f942826200012a602090811b62000d9017901c565b6200017d60201b62000dd91790919060201c565b600655506200012490503364174876e800620001db565b620004f3565b60006200017483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200034060201b60201c565b90505b92915050565b6000826200018e5750600062000177565b828202828482816200019c57fe5b0414620001745760405162461bcd60e51b815260040180806020018281038252602181526020018062001c686021913960400191505060405180910390fd5b6002541562000231576040805162461bcd60e51b815260206004820181905260248201527f4d696e743a204e6f7420616e20696e697469616c20737570706c79206d696e74604482015290519081900360640190fd5b6001600160a01b0382166200028d576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b6200029b60008383620003e7565b620002b781600254620003ec60201b62000e321790919060201c565b6002556001600160a01b03821660009081526020818152604090912054620002ea91839062000e32620003ec821b17901c565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b60008183620003d05760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015620003945781810151838201526020016200037a565b50505050905090810190601f168015620003c25780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581620003dd57fe5b0495945050505050565b505050565b60008282018381101562000174576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b828054600181600116156101000203166002900490600052602060002090601f0160209004810192826200047f5760008555620004ca565b82601f106200049a57805160ff1916838001178555620004ca565b82800160010185558215620004ca579182015b82811115620004ca578251825591602001919060010190620004ad565b50620004d8929150620004dc565b5090565b5b80821115620004d85760008155600101620004dd565b61176580620005036000396000f3fe6080604052600436106101395760003560e01c80634780eac1116100ab57806395d89b411161006f57806395d89b4114610484578063a457c2d714610499578063a9059cbb146104d2578063ccfc2e8d1461050b578063cf82046114610540578063dd62ed3e1461055557610149565b80634780eac1146103d95780635ceb62d7146103ee57806370a082311461040357806379cc679014610436578063900cf0cf1461046f57610149565b8063301a5801116100fd578063301a5801146102c0578063303308f214610321578063313ce567146103365780633793675c14610361578063395093511461037657806342966c68146103af57610149565b806306fdde031461014e578063095ea7b3146101d85780630d43e8ad1461022557806318160ddd1461025657806323b872dd1461027d57610149565b3661014957610146610590565b50005b600080fd5b34801561015a57600080fd5b50610163610868565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561019d578181015183820152602001610185565b50505050905090810190601f1680156101ca5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101e457600080fd5b50610211600480360360408110156101fb57600080fd5b506001600160a01b0381351690602001356108fe565b604080519115158252519081900360200190f35b34801561023157600080fd5b5061023a61091c565b604080516001600160a01b039092168252519081900360200190f35b34801561026257600080fd5b5061026b610930565b60408051918252519081900360200190f35b34801561028957600080fd5b50610211600480360360608110156102a057600080fd5b506001600160a01b03813581169160208101359091169060400135610936565b3480156102cc57600080fd5b50610303600480360360608110156102e357600080fd5b506001600160a01b038135811691602081013590911690604001356109bd565b60408051938452602084019290925282820152519081900360600190f35b34801561032d57600080fd5b50610211610590565b34801561034257600080fd5b5061034b610a52565b6040805160ff9092168252519081900360200190f35b34801561036d57600080fd5b5061026b610a5b565b34801561038257600080fd5b506102116004803603604081101561039957600080fd5b506001600160a01b038135169060200135610a61565b3480156103bb57600080fd5b50610211600480360360208110156103d257600080fd5b5035610aaf565b3480156103e557600080fd5b5061023a610aca565b3480156103fa57600080fd5b5061026b610ad9565b34801561040f57600080fd5b5061026b6004803603602081101561042657600080fd5b50356001600160a01b0316610b25565b34801561044257600080fd5b506102116004803603604081101561045957600080fd5b506001600160a01b038135169060200135610b40565b34801561047b57600080fd5b5061026b610b96565b34801561049057600080fd5b50610163610b9c565b3480156104a557600080fd5b50610211600480360360408110156104bc57600080fd5b506001600160a01b038135169060200135610bfd565b3480156104de57600080fd5b50610211600480360360408110156104f557600080fd5b506001600160a01b038135169060200135610c65565b34801561051757600080fd5b5061053e6004803603602081101561052e57600080fd5b50356001600160a01b0316610c79565b005b34801561054c57600080fd5b5061034b610d5c565b34801561056157600080fd5b5061026b6004803603604081101561057857600080fd5b506001600160a01b0381358116916020013516610d65565b30600090815260208190526040812054156105bf57306000818152602081905260409020546105bf9190610e8c565b47801561063057600960009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561061657600080fd5b505af115801561062a573d6000803e3d6000fd5b50505050505b610638610ad9565b158015610654575060085461010090046001600160a01b031615155b156106d55760075460065461066891610e32565b60065560085461010090046001600160a01b0316600090815260208190526040902054606410156106d55760085461010090046001600160a01b03166000818152602081905260409020546106d591906106d0906064906106ca906003610dd9565b90610d90565b610e8c565b60085461010090046001600160a01b03161561086057600954604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a0823191602480830192602092919082900301818787803b15801561073757600080fd5b505af115801561074b573d6000803e3d6000fd5b505050506040513d602081101561076157600080fd5b5051905080156107f6576009546008546040805163a9059cbb60e01b81526101009092046001600160a01b03908116600484015260248301859052905192169163a9059cbb916044808201926020929091908290030181600087803b1580156107c957600080fd5b505af11580156107dd573d6000803e3d6000fd5b505050506040513d60208110156107f357600080fd5b50505b600860019054906101000a90046001600160a01b03166001600160a01b031663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561084657600080fd5b505af115801561085a573d6000803e3d6000fd5b50505050505b600191505090565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108f45780601f106108c9576101008083540402835291602001916108f4565b820191906000526020600020905b8154815290600101906020018083116108d757829003601f168201915b5050505050905090565b600061091261090b610f8f565b8484610f93565b5060015b92915050565b60085461010090046001600160a01b031681565b60025490565b60006109a884610944610f8f565b6109a385604051806060016040528060288152602001611655602891396001600160a01b038a16600090815260016020526040812090610982610f8f565b6001600160a01b03168152602081019190915260400160002054919061107f565b610f93565b6109b3848484611116565b5060019392505050565b60008060006109d4866001600160a01b031661142f565b806109ec57506109ec856001600160a01b031661142f565b15610a3f57600854600090610a0c906064906106ca90889060ff16610dd9565b90506000610a1b826002610d90565b9050610a27868361146b565b610a31838361146b565b829450945094505050610a49565b5082915060009050805b93509350939050565b60055460ff1690565b60065481565b6000610912610a6e610f8f565b846109a38560016000610a7f610f8f565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490610e32565b6000610ac2610abc610f8f565b83610e8c565b506001919050565b6009546001600160a01b031681565b600042610af3600754600654610e3290919063ffffffff16565b11610aff576000610b20565b610b2042610b1a600754600654610e3290919063ffffffff16565b9061146b565b905090565b6001600160a01b031660009081526020819052604090205490565b6000610b8c83610b4e610f8f565b6109a38560405180606001604052806024815260200161167d602491396001600160a01b038916600090815260016020526040812090610982610f8f565b6109128383610e8c565b60075481565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108f45780601f106108c9576101008083540402835291602001916108f4565b6000610912610c0a610f8f565b846109a38560405180606001604052806025815260200161170b6025913960016000610c34610f8f565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919061107f565b6000610912610c72610f8f565b8484611116565b60055461010090046001600160a01b03163214610cd1576040805162461bcd60e51b81526020600482015260116024820152702737ba10333937b6903232b83637bcb2b960791b604482015290519081900360640190fd5b60085461010090046001600160a01b031615610d34576040805162461bcd60e51b815260206004820181905260248201527f506f6f6c3a204164647265737320696d6d757461626c65206f6e636520736574604482015290519081900360640190fd5b600880546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b60085460ff1681565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6000610dd283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506114ad565b9392505050565b600082610de857506000610916565b82820282848281610df557fe5b0414610dd25760405162461bcd60e51b81526004018080602001828103825260218152602001806116046021913960400191505060405180910390fd5b600082820183811015610dd2576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6001600160a01b038216610ed15760405162461bcd60e51b81526004018080602001828103825260218152602001806116a16021913960400191505060405180910390fd5b610edd82600083611512565b8015610f8b57610f208160405180606001604052806022815260200161153b602291396001600160a01b038516600090815260208190526040902054919061107f565b6001600160a01b038316600090815260208190526040902055600254610f46908261146b565b6002556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35b5050565b3390565b6001600160a01b038316610fd85760405162461bcd60e51b81526004018080602001828103825260248152602001806116e76024913960400191505060405180910390fd5b6001600160a01b03821661101d5760405162461bcd60e51b81526004018080602001828103825260228152602001806115886022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6000818484111561110e5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156110d35781810151838201526020016110bb565b50505050905090810190601f1680156111005780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6001600160a01b03831661115b5760405162461bcd60e51b81526004018080602001828103825260258152602001806116c26025913960400191505060405180910390fd5b6001600160a01b0382166111a05760405162461bcd60e51b81526004018080602001828103825260238152602001806115186023913960400191505060405180910390fd5b60648110156111e05760405162461bcd60e51b81526004018080602001828103825260308152602001806116256030913960400191505060405180910390fd5b6111eb838383611512565b60008060006111fb8686866109bd565b92509250925061123e836040518060600160405280602681526020016115aa602691396001600160a01b038916600090815260208190526040902054919061107f565b6001600160a01b03808816600090815260208190526040808220939093559087168152205461126d9084610e32565b6001600160a01b038087166000818152602081815260409182902094909455805187815290519193928a16927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a36000821180156112e1575060085461010090046001600160a01b031615155b1561141d576002546063906112f69085610d90565b10156113335760405162461bcd60e51b815260040180806020018281038252602b81526020018061155d602b913960400191505060405180910390fd5b61133d8682610e8c565b61137a826040518060600160405280603481526020016115d0603491396001600160a01b038916600090815260208190526040902054919061107f565b6001600160a01b03808816600090815260208190526040808220939093556008546101009004909116815220546113b19083610e32565b600880546001600160a01b036101009182900481166000908152602081815260409182902095909555925483518781529351929004811693908a16927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a3611427565b611425610590565b505b505050505050565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061146357508115155b949350505050565b6000610dd283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061107f565b600081836114fc5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156110d35781810151838201526020016110bb565b50600083858161150857fe5b0495945050505050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e63656d61782073696e676c65207472616465203125206f662063757272656e7420746f74616c20737570706c7945524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a20666565207472616e7366657220616d6f756e7420657863656564732072656d61696e696e672062616c616e6365536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77616d6f756e742062656c6f7720313030206261736520756e6974732c2061766f6964696e6720756e646572666c6f777345524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e20616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220cb6bfc5a9da24d07fbfb547d02eec0ca32b7e46a454db41f5aaca6fdbe801d8564736f6c63430007060033536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77
Deployed Bytecode
0x6080604052600436106101395760003560e01c80634780eac1116100ab57806395d89b411161006f57806395d89b4114610484578063a457c2d714610499578063a9059cbb146104d2578063ccfc2e8d1461050b578063cf82046114610540578063dd62ed3e1461055557610149565b80634780eac1146103d95780635ceb62d7146103ee57806370a082311461040357806379cc679014610436578063900cf0cf1461046f57610149565b8063301a5801116100fd578063301a5801146102c0578063303308f214610321578063313ce567146103365780633793675c14610361578063395093511461037657806342966c68146103af57610149565b806306fdde031461014e578063095ea7b3146101d85780630d43e8ad1461022557806318160ddd1461025657806323b872dd1461027d57610149565b3661014957610146610590565b50005b600080fd5b34801561015a57600080fd5b50610163610868565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561019d578181015183820152602001610185565b50505050905090810190601f1680156101ca5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101e457600080fd5b50610211600480360360408110156101fb57600080fd5b506001600160a01b0381351690602001356108fe565b604080519115158252519081900360200190f35b34801561023157600080fd5b5061023a61091c565b604080516001600160a01b039092168252519081900360200190f35b34801561026257600080fd5b5061026b610930565b60408051918252519081900360200190f35b34801561028957600080fd5b50610211600480360360608110156102a057600080fd5b506001600160a01b03813581169160208101359091169060400135610936565b3480156102cc57600080fd5b50610303600480360360608110156102e357600080fd5b506001600160a01b038135811691602081013590911690604001356109bd565b60408051938452602084019290925282820152519081900360600190f35b34801561032d57600080fd5b50610211610590565b34801561034257600080fd5b5061034b610a52565b6040805160ff9092168252519081900360200190f35b34801561036d57600080fd5b5061026b610a5b565b34801561038257600080fd5b506102116004803603604081101561039957600080fd5b506001600160a01b038135169060200135610a61565b3480156103bb57600080fd5b50610211600480360360208110156103d257600080fd5b5035610aaf565b3480156103e557600080fd5b5061023a610aca565b3480156103fa57600080fd5b5061026b610ad9565b34801561040f57600080fd5b5061026b6004803603602081101561042657600080fd5b50356001600160a01b0316610b25565b34801561044257600080fd5b506102116004803603604081101561045957600080fd5b506001600160a01b038135169060200135610b40565b34801561047b57600080fd5b5061026b610b96565b34801561049057600080fd5b50610163610b9c565b3480156104a557600080fd5b50610211600480360360408110156104bc57600080fd5b506001600160a01b038135169060200135610bfd565b3480156104de57600080fd5b50610211600480360360408110156104f557600080fd5b506001600160a01b038135169060200135610c65565b34801561051757600080fd5b5061053e6004803603602081101561052e57600080fd5b50356001600160a01b0316610c79565b005b34801561054c57600080fd5b5061034b610d5c565b34801561056157600080fd5b5061026b6004803603604081101561057857600080fd5b506001600160a01b0381358116916020013516610d65565b30600090815260208190526040812054156105bf57306000818152602081905260409020546105bf9190610e8c565b47801561063057600960009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561061657600080fd5b505af115801561062a573d6000803e3d6000fd5b50505050505b610638610ad9565b158015610654575060085461010090046001600160a01b031615155b156106d55760075460065461066891610e32565b60065560085461010090046001600160a01b0316600090815260208190526040902054606410156106d55760085461010090046001600160a01b03166000818152602081905260409020546106d591906106d0906064906106ca906003610dd9565b90610d90565b610e8c565b60085461010090046001600160a01b03161561086057600954604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a0823191602480830192602092919082900301818787803b15801561073757600080fd5b505af115801561074b573d6000803e3d6000fd5b505050506040513d602081101561076157600080fd5b5051905080156107f6576009546008546040805163a9059cbb60e01b81526101009092046001600160a01b03908116600484015260248301859052905192169163a9059cbb916044808201926020929091908290030181600087803b1580156107c957600080fd5b505af11580156107dd573d6000803e3d6000fd5b505050506040513d60208110156107f357600080fd5b50505b600860019054906101000a90046001600160a01b03166001600160a01b031663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561084657600080fd5b505af115801561085a573d6000803e3d6000fd5b50505050505b600191505090565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108f45780601f106108c9576101008083540402835291602001916108f4565b820191906000526020600020905b8154815290600101906020018083116108d757829003601f168201915b5050505050905090565b600061091261090b610f8f565b8484610f93565b5060015b92915050565b60085461010090046001600160a01b031681565b60025490565b60006109a884610944610f8f565b6109a385604051806060016040528060288152602001611655602891396001600160a01b038a16600090815260016020526040812090610982610f8f565b6001600160a01b03168152602081019190915260400160002054919061107f565b610f93565b6109b3848484611116565b5060019392505050565b60008060006109d4866001600160a01b031661142f565b806109ec57506109ec856001600160a01b031661142f565b15610a3f57600854600090610a0c906064906106ca90889060ff16610dd9565b90506000610a1b826002610d90565b9050610a27868361146b565b610a31838361146b565b829450945094505050610a49565b5082915060009050805b93509350939050565b60055460ff1690565b60065481565b6000610912610a6e610f8f565b846109a38560016000610a7f610f8f565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490610e32565b6000610ac2610abc610f8f565b83610e8c565b506001919050565b6009546001600160a01b031681565b600042610af3600754600654610e3290919063ffffffff16565b11610aff576000610b20565b610b2042610b1a600754600654610e3290919063ffffffff16565b9061146b565b905090565b6001600160a01b031660009081526020819052604090205490565b6000610b8c83610b4e610f8f565b6109a38560405180606001604052806024815260200161167d602491396001600160a01b038916600090815260016020526040812090610982610f8f565b6109128383610e8c565b60075481565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108f45780601f106108c9576101008083540402835291602001916108f4565b6000610912610c0a610f8f565b846109a38560405180606001604052806025815260200161170b6025913960016000610c34610f8f565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919061107f565b6000610912610c72610f8f565b8484611116565b60055461010090046001600160a01b03163214610cd1576040805162461bcd60e51b81526020600482015260116024820152702737ba10333937b6903232b83637bcb2b960791b604482015290519081900360640190fd5b60085461010090046001600160a01b031615610d34576040805162461bcd60e51b815260206004820181905260248201527f506f6f6c3a204164647265737320696d6d757461626c65206f6e636520736574604482015290519081900360640190fd5b600880546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b60085460ff1681565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6000610dd283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506114ad565b9392505050565b600082610de857506000610916565b82820282848281610df557fe5b0414610dd25760405162461bcd60e51b81526004018080602001828103825260218152602001806116046021913960400191505060405180910390fd5b600082820183811015610dd2576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6001600160a01b038216610ed15760405162461bcd60e51b81526004018080602001828103825260218152602001806116a16021913960400191505060405180910390fd5b610edd82600083611512565b8015610f8b57610f208160405180606001604052806022815260200161153b602291396001600160a01b038516600090815260208190526040902054919061107f565b6001600160a01b038316600090815260208190526040902055600254610f46908261146b565b6002556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35b5050565b3390565b6001600160a01b038316610fd85760405162461bcd60e51b81526004018080602001828103825260248152602001806116e76024913960400191505060405180910390fd5b6001600160a01b03821661101d5760405162461bcd60e51b81526004018080602001828103825260228152602001806115886022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6000818484111561110e5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156110d35781810151838201526020016110bb565b50505050905090810190601f1680156111005780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6001600160a01b03831661115b5760405162461bcd60e51b81526004018080602001828103825260258152602001806116c26025913960400191505060405180910390fd5b6001600160a01b0382166111a05760405162461bcd60e51b81526004018080602001828103825260238152602001806115186023913960400191505060405180910390fd5b60648110156111e05760405162461bcd60e51b81526004018080602001828103825260308152602001806116256030913960400191505060405180910390fd5b6111eb838383611512565b60008060006111fb8686866109bd565b92509250925061123e836040518060600160405280602681526020016115aa602691396001600160a01b038916600090815260208190526040902054919061107f565b6001600160a01b03808816600090815260208190526040808220939093559087168152205461126d9084610e32565b6001600160a01b038087166000818152602081815260409182902094909455805187815290519193928a16927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a36000821180156112e1575060085461010090046001600160a01b031615155b1561141d576002546063906112f69085610d90565b10156113335760405162461bcd60e51b815260040180806020018281038252602b81526020018061155d602b913960400191505060405180910390fd5b61133d8682610e8c565b61137a826040518060600160405280603481526020016115d0603491396001600160a01b038916600090815260208190526040902054919061107f565b6001600160a01b03808816600090815260208190526040808220939093556008546101009004909116815220546113b19083610e32565b600880546001600160a01b036101009182900481166000908152602081815260409182902095909555925483518781529351929004811693908a16927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a3611427565b611425610590565b505b505050505050565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061146357508115155b949350505050565b6000610dd283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061107f565b600081836114fc5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156110d35781810151838201526020016110bb565b50600083858161150857fe5b0495945050505050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e63656d61782073696e676c65207472616465203125206f662063757272656e7420746f74616c20737570706c7945524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a20666565207472616e7366657220616d6f756e7420657863656564732072656d61696e696e672062616c616e6365536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77616d6f756e742062656c6f7720313030206261736520756e6974732c2061766f6964696e6720756e646572666c6f777345524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e20616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220cb6bfc5a9da24d07fbfb547d02eec0ca32b7e46a454db41f5aaca6fdbe801d8564736f6c63430007060033
Deployed Bytecode Sourcemap
18752:220:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18307:17;:15;:17::i;:::-;;18752:220;;;;;9672:83;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10512:169;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;10512:169:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;9122:29;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;9122:29:0;;;;;;;;;;;;;;9943:100;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;10687:321;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;10687:321:0;;;;;;;;;;;;;;;;;:::i;13655:641::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;13655:641:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;11839:1369;;;;;;;;;;;;;:::i;9854:83::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8943:31;;;;;;;;;;;;;:::i;11014:227::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;11014:227:0;;;;;;;;:::i;14594:137::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14594:137:0;;:::i;9209:27::-;;;;;;;;;;;;;:::i;11531:190::-;;;;;;;;;;;;;:::i;10049:119::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10049:119:0;-1:-1:-1;;;;;10049:119:0;;:::i;14304:282::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;14304:282:0;;;;;;;;:::i;8981:20::-;;;;;;;;;;;;;:::i;9761:87::-;;;;;;;;;;;;;:::i;11247:278::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;11247:278:0;;;;;;;;:::i;10174:175::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;10174:175:0;;;;;;;;:::i;13304:251::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13304:251:0;-1:-1:-1;;;;;13304:251:0;;:::i;:::-;;9036:22;;;;;;;;;;;;;:::i;10355:151::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;10355:151:0;;;;;;;;;;:::i;11839:1369::-;11998:4;11890;11980:24;;;;;;;;;;;:28;11976:106;;12039:4;12045:9;:24;;;;;;;;;;;12025:45;;12039:4;12025:5;:45::i;:::-;12157:21;12193:13;;12189:94;;12229:12;;;;;;;;;-1:-1:-1;;;;;12229:12:0;-1:-1:-1;;;;;12223:27:0;;12259:9;12223:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12189:94;12358:22;:20;:22::i;:::-;:27;:59;;;;-1:-1:-1;12389:14:0;;;;;-1:-1:-1;;;;;12389:14:0;:28;;12358:59;12354:329;;;12474:5;;12453:16;;:27;;:20;:27::i;:::-;12434:16;:46;12551:14;;;;;-1:-1:-1;;;;;12551:14:0;12541:9;:25;;;;;;;;;;;12569:3;-1:-1:-1;12537:135:0;;;12599:14;;;;;-1:-1:-1;;;;;12599:14:0;12614:9;:25;;;;;;;;;;;12593:63;;12599:14;12614:41;;12651:3;;12614:32;;12644:1;12614:29;:32::i;:::-;:36;;:41::i;:::-;12593:5;:63::i;:::-;12780:14;;;;;-1:-1:-1;;;;;12780:14:0;:28;12777:402;;12886:12;;12880:44;;;-1:-1:-1;;;12880:44:0;;12918:4;12880:44;;;;;;12858:18;;-1:-1:-1;;;;;12886:12:0;;12880:29;;:44;;;;;;;;;;;;;;12858:18;12886:12;12880:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12880:44:0;;-1:-1:-1;12977:14:0;;12973:111;;13018:12;;13041:14;;13012:56;;;-1:-1:-1;;;13012:56:0;;13018:12;13041:14;;;-1:-1:-1;;;;;13041:14:0;;;13012:56;;;;;;;;;;;;13018:12;;;13012:28;;:56;;;;;;;;;;;;;;;13018:12;;13012:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;12973:111:0;13108:14;;;;;;;;;-1:-1:-1;;;;;13108:14:0;-1:-1:-1;;;;;13098:30:0;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12777:402;;13196:4;13189:11;;;11839:1369;:::o;9672:83::-;9742:5;9735:12;;;;;;;;-1:-1:-1;;9735:12:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9709:13;;9735:12;;9742:5;;9735:12;;9742:5;9735:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9672:83;:::o;10512:169::-;10595:4;10612:39;10621:12;:10;:12::i;:::-;10635:7;10644:6;10612:8;:39::i;:::-;-1:-1:-1;10669:4:0;10512:169;;;;;:::o;9122:29::-;;;;;;-1:-1:-1;;;;;9122:29:0;;:::o;9943:100::-;10023:12;;9943:100;:::o;10687:321::-;10793:4;10810:121;10819:6;10827:12;:10;:12::i;:::-;10841:89;10879:6;10841:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10841:19:0;;;;;;:11;:19;;;;;;10861:12;:10;:12::i;:::-;-1:-1:-1;;;;;10841:33:0;;;;;;;;;;;;-1:-1:-1;10841:33:0;;;:89;:37;:89::i;:::-;10810:8;:121::i;:::-;10942:36;10952:6;10960:9;10971:6;10942:9;:36::i;:::-;-1:-1:-1;10996:4:0;10687:321;;;;;:::o;13655:641::-;13795:24;13821:38;13861:18;13955:19;:6;-1:-1:-1;;;;;13955:17:0;;:19::i;:::-;:45;;;;13978:22;:9;-1:-1:-1;;;;;13978:20:0;;:22::i;:::-;13951:306;;;14122:5;;14097:11;;14111:26;;14133:3;;14111:17;;:6;;14122:5;;14111:10;:17::i;:26::-;14097:40;-1:-1:-1;14152:15:0;14170:10;14097:40;14178:1;14170:7;:10::i;:::-;14152:28;-1:-1:-1;14203:15:0;:6;14214:3;14203:10;:15::i;:::-;14220:16;:3;14228:7;14220;:16::i;:::-;14237:7;14195:50;;;;;;;;;;13951:306;-1:-1:-1;14275:6:0;;-1:-1:-1;14283:1:0;;-1:-1:-1;14283:1:0;13655:641;;;;;;;;:::o;9854:83::-;9920:9;;;;9854:83;:::o;8943:31::-;;;;:::o;11014:227::-;11111:4;11128:83;11137:12;:10;:12::i;:::-;11151:7;11160:50;11199:10;11160:11;:25;11172:12;:10;:12::i;:::-;-1:-1:-1;;;;;11160:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;11160:25:0;;;:34;;;;;;;;;;;:38;:50::i;14594:137::-;14657:4;14674:27;14680:12;:10;:12::i;:::-;14694:6;14674:5;:27::i;:::-;-1:-1:-1;14719:4:0;14594:137;;;:::o;9209:27::-;;;-1:-1:-1;;;;;9209:27:0;;:::o;11531:190::-;11584:7;11644:15;11615:27;11636:5;;11615:16;;:20;;:27;;;;:::i;:::-;11614:45;:98;;11711:1;11614:98;;;11661:48;11693:15;11661:27;11682:5;;11661:16;;:20;;:27;;;;:::i;:::-;:31;;:48::i;:::-;11606:107;;11531:190;:::o;10049:119::-;-1:-1:-1;;;;;10142:18:0;10115:7;10142:18;;;;;;;;;;;;10049:119::o;14304:282::-;14387:4;14404:119;14413:7;14422:12;:10;:12::i;:::-;14436:86;14475:6;14436:86;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14436:20:0;;;;;;:11;:20;;;;;;14457:12;:10;:12::i;14404:119::-;14534:22;14540:7;14549:6;14534:5;:22::i;8981:20::-;;;;:::o;9761:87::-;9833:7;9826:14;;;;;;;;-1:-1:-1;;9826:14:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9800:13;;9826:14;;9833:7;;9826:14;;9833:7;9826:14;;;;;;;;;;;;;;;;;;;;;;;;11247:278;11349:4;11366:129;11375:12;:10;:12::i;:::-;11389:7;11398:96;11437:15;11398:96;;;;;;;;;;;;;;;;;:11;:25;11410:12;:10;:12::i;:::-;-1:-1:-1;;;;;11398:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;11398:25:0;;;:34;;;;;;;;;;;:96;:38;:96::i;10174:175::-;10260:4;10277:42;10287:12;:10;:12::i;:::-;10301:9;10312:6;10277:9;:42::i;13304:251::-;13392:9;;;;;-1:-1:-1;;;;;13392:9:0;13379;:22;13371:52;;;;;-1:-1:-1;;;13371:52:0;;;;;;;;;;;;-1:-1:-1;;;13371:52:0;;;;;;;;;;;;;;;13442:14;;;;;-1:-1:-1;;;;;13442:14:0;:28;13434:73;;;;;-1:-1:-1;;;13434:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13518:14;:29;;-1:-1:-1;;;;;13518:29:0;;;;;-1:-1:-1;;;;;;13518:29:0;;;;;;;;;13304:251::o;9036:22::-;;;;;;:::o;10355:151::-;-1:-1:-1;;;;;10471:18:0;;;10444:7;10471:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;10355:151::o;4438:132::-;4496:7;4523:39;4527:1;4530;4523:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;4516:46;4438:132;-1:-1:-1;;;4438:132:0:o;4186:246::-;4244:7;4268:6;4264:47;;-1:-1:-1;4298:1:0;4291:8;;4264:47;4333:5;;;4337:1;4333;:5;:1;4357:5;;;;;:10;4349:56;;;;-1:-1:-1;;;4349:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3663:179;3721:7;3753:5;;;3777:6;;;;3769:46;;;;;-1:-1:-1;;;3769:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;17048:464;-1:-1:-1;;;;;17132:21:0;;17124:67;;;;-1:-1:-1;;;17124:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17202:49;17223:7;17240:1;17244:6;17202:20;:49::i;:::-;17265:11;;17262:243;;17314:68;17337:6;17314:68;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17314:18:0;;:9;:18;;;;;;;;;;;;:68;:22;:68::i;:::-;-1:-1:-1;;;;;17293:18:0;;:9;:18;;;;;;;;;;:89;17412:12;;:24;;17429:6;17412:16;:24::i;:::-;17397:12;:39;17456:37;;;;;;;;17482:1;;-1:-1:-1;;;;;17456:37:0;;;;;;;;;;;;17262:243;17048:464;;:::o;1950:106::-;2038:10;1950:106;:::o;17520:344::-;-1:-1:-1;;;;;17622:19:0;;17614:68;;;;-1:-1:-1;;;17614:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17701:21:0;;17693:68;;;;-1:-1:-1;;;17693:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17772:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;17824:32;;;;;;;;;;;;;;;;;17520:344;;;:::o;3990:190::-;4076:7;4112:12;4104:6;;;;4096:29;;;;-1:-1:-1;;;4096:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4148:5:0;;;3990:190::o;14739:1846::-;-1:-1:-1;;;;;14845:20:0;;14837:70;;;;-1:-1:-1;;;14837:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14926:23:0;;14918:71;;;;-1:-1:-1;;;14918:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15018:3;15008:6;:13;;15000:74;;;;-1:-1:-1;;;15000:74:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15085:47;15106:6;15114:9;15125:6;15085:20;:47::i;:::-;15171:24;15197:38;15236:18;15258:51;15283:6;15291:9;15302:6;15258:24;:51::i;:::-;15170:139;;;;;;15417:81;15439:16;15417:81;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15417:17:0;;:9;:17;;;;;;;;;;;;:81;:21;:81::i;:::-;-1:-1:-1;;;;;15397:17:0;;;:9;:17;;;;;;;;;;;:101;;;;15571:20;;;;;;;:42;;15596:16;15571:24;:42::i;:::-;-1:-1:-1;;;;;15548:20:0;;;:9;:20;;;;;;;;;;;;:65;;;;15629:45;;;;;;;15548:20;;15629:45;;;;;;;;;;;;;15806:1;15773:30;:34;:66;;;;-1:-1:-1;15811:14:0;;;;;-1:-1:-1;;;;;15811:14:0;:28;;15773:66;15770:808;;;15863:12;;15901:2;;15863:34;;15880:16;15863;:34::i;:::-;:40;;15855:96;;;;-1:-1:-1;;;15855:96:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15966:24;15972:6;15979:10;15966:5;:24::i;:::-;16025:109;16047:30;16025:109;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16025:17:0;;:9;:17;;;;;;;;;;;;:109;:21;:109::i;:::-;-1:-1:-1;;;;;16005:17:0;;;:9;:17;;;;;;;;;;;:129;;;;16187:14;;;;;;;;16177:25;;;;:61;;16207:30;16177:29;:61::i;:::-;16159:14;;;-1:-1:-1;;;;;16159:14:0;;;;;;;16149:9;:25;;;;;;;;;;;;:89;;;;16275:14;;16258:64;;;;;;;16275:14;;;;;;16258:64;;;;;;;;;;;;;;;15770:808;;;16549:17;:15;:17::i;:::-;;15770:808;14739:1846;;;;;;:::o;5105:619::-;5165:4;5633:20;;5476:66;5673:23;;;;;;:42;;-1:-1:-1;5700:15:0;;;5673:42;5665:51;5105:619;-1:-1:-1;;;;5105:619:0:o;3848:136::-;3906:7;3933:43;3937:1;3940;3933:43;;;;;;;;;;;;;;;;;:3;:43::i;4576:189::-;4662:7;4697:12;4690:5;4682:28;;;;-1:-1:-1;;;4682:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4721:9;4737:1;4733;:5;;;;;;;4576:189;-1:-1:-1;;;;;4576:189:0:o;18088:92::-;;;;:::o
Swarm Source
ipfs://cb6bfc5a9da24d07fbfb547d02eec0ca32b7e46a454db41f5aaca6fdbe801d85
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.