ERC-20
Overview
Max Total Supply
500,000,000 ROOK
Holders
829
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 12 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
Token
Compiler Version
v0.5.12+commit.7709ece9
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2020-01-26 */ pragma solidity ^0.5.0; // ---------------------------------------------------------------------------- // Safe maths // ---------------------------------------------------------------------------- library SafeMath { function add(uint a, uint b) internal pure returns (uint c) { c = a + b; require(c >= a); } function sub(uint a, uint b) internal pure returns (uint c) { require(b <= a); c = a - b; } function mul(uint a, uint b) internal pure returns (uint c) { c = a * b; require(a == 0 || c / a == b); } function div(uint a, uint b) internal pure returns (uint c) { require(b > 0); c = a / b; } } // ---------------------------------------------------------------------------- // ERC Toke n Standard #20 Interface // https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20.md // ---------------------------------------------------------------------------- contract ERC20Interface { function totalSupply() public view returns (uint); function balanceOf(address tokenOwner) public view returns (uint balance); function allowance(address tokenOwner, address spender) public view returns (uint remaining); function transfer(address to, uint tokens) public returns (bool success); function approve(address spender, uint tokens) public returns (bool success); function transferFrom(address from, address to, uint tokens) public returns (bool success); event Transfer(address indexed from, address indexed to, uint tokens); event Approval(address indexed tokenOwner, address indexed spender, uint tokens); } // ---------------------------------------------------------------------------- // Contract function to receive approval and execute function in one call // // Borrowed from MiniMeToken // ---------------------------------------------------------------------------- contract ApproveAndCallFallBack { function receiveApproval(address from, uint256 tokens, address token, bytes memory data) public; } // ---------------------------------------------------------------------------- // Owned contract // ---------------------------------------------------------------------------- contract Owned { address public owner; address public newOwner; event OwnershipTransferred(address indexed _from, address indexed _to); constructor() public { owner = 0x0a676A7aF8c5BA369b7e12a70B7865c8B7422D11; } modifier onlyOwner { require(msg.sender == owner); _; } function transferOwnership(address _newOwner) public onlyOwner { newOwner = _newOwner; } function acceptOwnership() public { require(msg.sender == newOwner); emit OwnershipTransferred(owner, newOwner); owner = newOwner; newOwner = address(0); } } contract ERC1132 { /** * @dev Reasons why a user's tokens have been locked */ mapping(address => bytes32[]) public lockReason; /** * @dev locked token structure */ struct lockToken { uint256 amount; uint256 validity; bool claimed; } /** * @dev Holds number & validity of tokens locked for a given reason for * a specified address */ mapping(address => mapping(bytes32 => lockToken)) public locked; /** * @dev Records data of all the tokens Locked */ event Locked( address indexed _of, bytes32 indexed _reason, uint256 _amount, uint256 _validity ); /** * @dev Records data of all the tokens unlocked */ event Unlocked( address indexed _of, bytes32 indexed _reason, uint256 _amount ); /** * @dev Locks a specified amount of tokens against an address, * for a specified reason and time * @param _reason The reason to lock tokens * @param _amount Number of tokens to be locked * @param _time Lock time in seconds */ function lock(bytes32 _reason, uint256 _amount, uint256 _time) public returns (bool); /** * @dev Returns tokens locked for a specified address for a * specified reason * * @param _of The address whose tokens are locked * @param _reason The reason to query the lock tokens for */ function tokensLocked(address _of, bytes32 _reason) public view returns (uint256 amount); /** * @dev Returns tokens locked for a specified address for a * specified reason at a specific time * * @param _of The address whose tokens are locked * @param _reason The reason to query the lock tokens for * @param _time The timestamp to query the lock tokens for */ function tokensLockedAtTime(address _of, bytes32 _reason, uint256 _time) public view returns (uint256 amount); /** * @dev Returns total tokens held by an address (locked + transferable) * @param _of The address to query the total balance of */ function totalBalanceOf(address _of) public view returns (uint256 amount); /** * @dev Extends lock for a specified reason and time * @param _reason The reason to lock tokens * @param _time Lock extension time in seconds */ function extendLock(bytes32 _reason, uint256 _time) public returns (bool); /** * @dev Increase number of tokens locked for a specified reason * @param _reason The reason to lock tokens * @param _amount Number of tokens to be increased */ function increaseLockAmount(bytes32 _reason, uint256 _amount) public returns (bool); /** * @dev Returns unlockable tokens for a specified address for a specified reason * @param _of The address to query the the unlockable token count of * @param _reason The reason to query the unlockable tokens for */ function tokensUnlockable(address _of, bytes32 _reason) public view returns (uint256 amount); /** * @dev Unlocks the unlockable tokens of a specified address * @param _of Address of user, claiming back unlockable tokens */ function unlock(address _of) public returns (uint256 unlockableTokens); /** * @dev Gets the unlockable tokens of a specified address * @param _of The address to query the the unlockable token count of */ function getUnlockableTokens(address _of) public view returns (uint256 unlockableTokens); } // ---------------------------------------------------------------------------- // ERC20 Token, with the addition of symbol, name and decimals and a // fixed supply // ---------------------------------------------------------------------------- contract Token is ERC1132, ERC20Interface, Owned { using SafeMath for uint; string internal constant ALREADY_LOCKED = 'Tokens already locked'; string internal constant NOT_LOCKED = 'No tokens locked'; string internal constant AMOUNT_ZERO = 'Amount can not be 0'; string public symbol; string public name; uint8 public decimals; uint _totalSupply; mapping(address => uint) balances; mapping(address => mapping(address => uint)) allowed; // ------------------------------------------------------------------------ // Constructor // ------------------------------------------------------------------------ constructor() public { symbol = "ROOK"; name = "ROOK"; decimals = 12; _totalSupply = 500000000 * 10**uint(decimals); balances[owner] = _totalSupply; emit Transfer(address(0), owner, _totalSupply); } // ------------------------------------------------------------------------ // Total supply // ------------------------------------------------------------------------ function totalSupply() public view returns (uint) { return _totalSupply.sub(balances[address(0)]); } // ------------------------------------------------------------------------ // Get the token balance for account `tokenOwner` // ------------------------------------------------------------------------ function balanceOf(address tokenOwner) public view returns (uint balance) { return balances[tokenOwner]; } // ------------------------------------------------------------------------ // Transfer the balance from token owner's account to `to` account // - Owner's account must have sufficient balance to transfer // - 0 value transfers are allowed // ------------------------------------------------------------------------ function transfer(address to, uint tokens) public returns (bool success) { balances[msg.sender] = balances[msg.sender].sub(tokens); balances[to] = balances[to].add(tokens); emit Transfer(msg.sender, to, tokens); return true; } // ------------------------------------------------------------------------ // Token owner can approve for `spender` to transferFrom(...) `tokens` // from the token owner's account // // https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20-token-standard.md // recommends that there are no checks for the approval double-spend attack // as this should be implemented in user interfaces // ------------------------------------------------------------------------ function approve(address spender, uint tokens) public returns (bool success) { allowed[msg.sender][spender] = tokens; emit Approval(msg.sender, spender, tokens); return true; } // ------------------------------------------------------------------------ // Transfer `tokens` from the `from` account to the `to` account // // The calling account must already have sufficient tokens approve(...)-d // for spending from the `from` account and // - From account must have sufficient balance to transfer // - Spender must have sufficient allowance to transfer // - 0 value transfers are allowed // ------------------------------------------------------------------------ function transferFrom(address from, address to, uint tokens) public returns (bool success) { balances[from] = balances[from].sub(tokens); allowed[from][msg.sender] = allowed[from][msg.sender].sub(tokens); balances[to] = balances[to].add(tokens); emit Transfer(from, to, tokens); return true; } // ------------------------------------------------------------------------ // Returns the amount of tokens approved by the owner that can be // transferred to the spender's account // ------------------------------------------------------------------------ function allowance(address tokenOwner, address spender) public view returns (uint remaining) { return allowed[tokenOwner][spender]; } // ------------------------------------------------------------------------ // Token owner can approve for `spender` to transferFrom(...) `tokens` // from the token owner's account. The `spender` contract function // `receiveApproval(...)` is then executed // ------------------------------------------------------------------------ function approveAndCall(address spender, uint tokens, bytes memory data) public returns (bool success) { allowed[msg.sender][spender] = tokens; emit Approval(msg.sender, spender, tokens); ApproveAndCallFallBack(spender).receiveApproval(msg.sender, tokens, address(this), data); return true; } // ------------------------------------------------------------------------ // Don't accept ETH // ------------------------------------------------------------------------ function () external payable { revert(); } // ------------------------------------------------------------------------ // Owner can transfer out any accidentally sent ERC20 tokens // ------------------------------------------------------------------------ function transferAnyERC20Token(address tokenAddress, uint tokens) public onlyOwner returns (bool success) { return ERC20Interface(tokenAddress).transfer(owner, tokens); } function mint(address account, uint256 amount) onlyOwner public returns (bool) { require(account != address(0), "ERC20: mint to the zero address"); _totalSupply = _totalSupply.add(amount); balances[account] = balances[account].add(amount); emit Transfer(address(0), account, amount); } /** * @dev Destroys `amount` tokens from `account`, reducing the * total supply. * * Emits a {Transfer} event with `to` set to the zero address. * * Requirements * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ function burn(address account, uint256 amount) onlyOwner public returns (bool) { require(account != address(0), "ERC20: burn from the zero address"); balances[account] = balances[account].sub(amount); _totalSupply = _totalSupply.sub(amount); emit Transfer(account, address(0), amount); } /** * @dev Locks a specified amount of tokens against an address, * for a specified reason and time * @param _reason The reason to lock tokens * @param _amount Number of tokens to be locked * @param _time Lock time in seconds */ function lock(bytes32 _reason, uint256 _amount, uint256 _time) public returns (bool) { uint256 validUntil = now.add(_time); //solhint-disable-line // If tokens are already locked, then functions extendLock or // increaseLockAmount should be used to make any changes require(tokensLocked(msg.sender, _reason) == 0, ALREADY_LOCKED); require(_amount != 0, AMOUNT_ZERO); if (locked[msg.sender][_reason].amount == 0) lockReason[msg.sender].push(_reason); transfer(address(this), _amount); locked[msg.sender][_reason] = lockToken(_amount, validUntil, false); emit Locked(msg.sender, _reason, _amount, validUntil); return true; } /** * @dev Transfers and Locks a specified amount of tokens, * for a specified reason and time * @param _to adress to which tokens are to be transfered * @param _reason The reason to lock tokens * @param _amount Number of tokens to be transfered and locked * @param _time Lock time in seconds */ function transferWithLock(address _to, bytes32 _reason, uint256 _amount, uint256 _time) public returns (bool) { uint256 validUntil = now.add(_time); //solhint-disable-line require(tokensLocked(_to, _reason) == 0, ALREADY_LOCKED); require(_amount != 0, AMOUNT_ZERO); if (locked[_to][_reason].amount == 0) lockReason[_to].push(_reason); transfer(address(this), _amount); locked[_to][_reason] = lockToken(_amount, validUntil, false); emit Locked(_to, _reason, _amount, validUntil); return true; } /** * @dev Returns tokens locked for a specified address for a * specified reason * * @param _of The address whose tokens are locked * @param _reason The reason to query the lock tokens for */ function tokensLocked(address _of, bytes32 _reason) public view returns (uint256 amount) { if (!locked[_of][_reason].claimed) amount = locked[_of][_reason].amount; } /** * @dev Returns tokens locked for a specified address for a * specified reason at a specific time * * @param _of The address whose tokens are locked * @param _reason The reason to query the lock tokens for * @param _time The timestamp to query the lock tokens for */ function tokensLockedAtTime(address _of, bytes32 _reason, uint256 _time) public view returns (uint256 amount) { if (locked[_of][_reason].validity > _time) amount = locked[_of][_reason].amount; } /** * @dev Returns total tokens held by an address (locked + transferable) * @param _of The address to query the total balance of */ function totalBalanceOf(address _of) public view returns (uint256 amount) { amount = balanceOf(_of); for (uint256 i = 0; i < lockReason[_of].length; i++) { amount = amount.add(tokensLocked(_of, lockReason[_of][i])); } } /** * @dev Extends lock for a specified reason and time * @param _reason The reason to lock tokens * @param _time Lock extension time in seconds */ function extendLock(bytes32 _reason, uint256 _time) public returns (bool) { require(tokensLocked(msg.sender, _reason) > 0, NOT_LOCKED); locked[msg.sender][_reason].validity = locked[msg.sender][_reason].validity.add(_time); emit Locked(msg.sender, _reason, locked[msg.sender][_reason].amount, locked[msg.sender][_reason].validity); return true; } /** * @dev Increase number of tokens locked for a specified reason * @param _reason The reason to lock tokens * @param _amount Number of tokens to be increased */ function increaseLockAmount(bytes32 _reason, uint256 _amount) public returns (bool) { require(tokensLocked(msg.sender, _reason) > 0, NOT_LOCKED); transfer(address(this), _amount); locked[msg.sender][_reason].amount = locked[msg.sender][_reason].amount.add(_amount); emit Locked(msg.sender, _reason, locked[msg.sender][_reason].amount, locked[msg.sender][_reason].validity); return true; } /** * @dev Returns unlockable tokens for a specified address for a specified reason * @param _of The address to query the the unlockable token count of * @param _reason The reason to query the unlockable tokens for */ function tokensUnlockable(address _of, bytes32 _reason) public view returns (uint256 amount) { if (locked[_of][_reason].validity <= now && !locked[_of][_reason].claimed) //solhint-disable-line amount = locked[_of][_reason].amount; } /** * @dev Unlocks the unlockable tokens of a specified address * @param _of Address of user, claiming back unlockable tokens */ function unlock(address _of) public returns (uint256 unlockableTokens) { uint256 lockedTokens; for (uint256 i = 0; i < lockReason[_of].length; i++) { lockedTokens = tokensUnlockable(_of, lockReason[_of][i]); if (lockedTokens > 0) { unlockableTokens = unlockableTokens.add(lockedTokens); locked[_of][lockReason[_of][i]].claimed = true; emit Unlocked(_of, lockReason[_of][i], lockedTokens); } } if (unlockableTokens > 0) this.transfer(_of, unlockableTokens); } /** * @dev Gets the unlockable tokens of a specified address * @param _of The address to query the the unlockable token count of */ function getUnlockableTokens(address _of) public view returns (uint256 unlockableTokens) { for (uint256 i = 0; i < lockReason[_of].length; i++) { unlockableTokens = unlockableTokens.add(tokensUnlockable(_of, lockReason[_of][i])); } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"tokenOwner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_of","type":"address"},{"indexed":true,"internalType":"bytes32","name":"_reason","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_validity","type":"uint256"}],"name":"Locked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","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":"tokens","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_of","type":"address"},{"indexed":true,"internalType":"bytes32","name":"_reason","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"Unlocked","type":"event"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"constant":false,"inputs":[],"name":"acceptOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"tokenOwner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"remaining","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"approveAndCall","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"tokenOwner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"_reason","type":"bytes32"},{"internalType":"uint256","name":"_time","type":"uint256"}],"name":"extendLock","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_of","type":"address"}],"name":"getUnlockableTokens","outputs":[{"internalType":"uint256","name":"unlockableTokens","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"_reason","type":"bytes32"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"increaseLockAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"_reason","type":"bytes32"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint256","name":"_time","type":"uint256"}],"name":"lock","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"lockReason","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"locked","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"validity","type":"uint256"},{"internalType":"bool","name":"claimed","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"newOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_of","type":"address"},{"internalType":"bytes32","name":"_reason","type":"bytes32"}],"name":"tokensLocked","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_of","type":"address"},{"internalType":"bytes32","name":"_reason","type":"bytes32"},{"internalType":"uint256","name":"_time","type":"uint256"}],"name":"tokensLockedAtTime","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_of","type":"address"},{"internalType":"bytes32","name":"_reason","type":"bytes32"}],"name":"tokensUnlockable","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_of","type":"address"}],"name":"totalBalanceOf","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"transferAnyERC20Token","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"bytes32","name":"_reason","type":"bytes32"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint256","name":"_time","type":"uint256"}],"name":"transferWithLock","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_of","type":"address"}],"name":"unlock","outputs":[{"internalType":"uint256","name":"unlockableTokens","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040523480156200001157600080fd5b50600280546001600160a01b031916730a676a7af8c5ba369b7e12a70b7865c8b7422d111790556040805180820190915260048082527f524f4f4b0000000000000000000000000000000000000000000000000000000060209092019182526200007c91816200014a565b506040805180820190915260048082527f524f4f4b000000000000000000000000000000000000000000000000000000006020909201918252620000c3916005916200014a565b5060068054600c60ff19909116179081905560ff16600a0a631dcd6500026007819055600280546001600160a01b039081166000908152600860209081526040808320869055935484519586529351939092169390927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929181900390910190a3620001ef565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200018d57805160ff1916838001178555620001bd565b82800160010185558215620001bd579182015b82811115620001bd578251825591602001919060010190620001a0565b50620001cb929150620001cf565b5090565b620001ec91905b80821115620001cb5760008155600101620001d6565b90565b611c0880620001ff6000396000f3fe6080604052600436106101c25760003560e01c806371d66f00116100f7578063a9dab16711610095578063d71be8db11610064578063d71be8db146107a9578063dc39d06d14610802578063dd62ed3e1461083b578063f2fde38b14610876576101c2565b8063a9dab16714610669578063ab4a2eb314610699578063cae9ca51146106cc578063d4ee1d9014610794576101c2565b80638da5cb5b116100d15780638da5cb5b146105b157806395d89b41146105e25780639dc29fac146105f7578063a9059cbb14610630576101c2565b806371d66f001461053157806379ba50971461056a57806381fc4d9014610581576101c2565b8063313ce567116101645780634cb5465f1161013e5780634cb5465f146104475780635294d0e81461048c5780635ca48d8c146104c557806370a08231146104fe576101c2565b8063313ce567146103b057806340c10f19146103db5780634b0ee02a14610414576101c2565b806318160ddd116101a057806318160ddd146102ef57806323b872dd146103045780632e82aaf2146103475780632f6c493c1461037d576101c2565b806306fdde03146101c7578063095ea7b314610251578063179e91f11461029e575b600080fd5b3480156101d357600080fd5b506101dc6108a9565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102165781810151838201526020016101fe565b50505050905090810190601f1680156102435780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561025d57600080fd5b5061028a6004803603604081101561027457600080fd5b506001600160a01b038135169060200135610937565b604080519115158252519081900360200190f35b3480156102aa57600080fd5b506102dd600480360360608110156102c157600080fd5b506001600160a01b03813516906020810135906040013561099e565b60408051918252519081900360200190f35b3480156102fb57600080fd5b506102dd6109f7565b34801561031057600080fd5b5061028a6004803603606081101561032757600080fd5b506001600160a01b03813581169160208101359091169060400135610a3a565b34801561035357600080fd5b5061028a6004803603606081101561036a57600080fd5b5080359060208101359060400135610b33565b34801561038957600080fd5b506102dd600480360360208110156103a057600080fd5b50356001600160a01b0316610d50565b3480156103bc57600080fd5b506103c5610f2b565b6040805160ff9092168252519081900360200190f35b3480156103e757600080fd5b5061028a600480360360408110156103fe57600080fd5b506001600160a01b038135169060200135610f34565b34801561042057600080fd5b506102dd6004803603602081101561043757600080fd5b50356001600160a01b0316611030565b34801561045357600080fd5b5061028a6004803603608081101561046a57600080fd5b506001600160a01b0381351690602081013590604081013590606001356110bd565b34801561049857600080fd5b506102dd600480360360408110156104af57600080fd5b506001600160a01b0381351690602001356112b9565b3480156104d157600080fd5b506102dd600480360360408110156104e857600080fd5b506001600160a01b038135169060200135611342565b34801561050a57600080fd5b506102dd6004803603602081101561052157600080fd5b50356001600160a01b0316611399565b34801561053d57600080fd5b506102dd6004803603604081101561055457600080fd5b506001600160a01b0381351690602001356113b4565b34801561057657600080fd5b5061057f6113e2565b005b34801561058d57600080fd5b5061028a600480360360408110156105a457600080fd5b508035906020013561145f565b3480156105bd57600080fd5b506105c6611568565b604080516001600160a01b039092168252519081900360200190f35b3480156105ee57600080fd5b506101dc611577565b34801561060357600080fd5b5061028a6004803603604081101561061a57600080fd5b506001600160a01b0381351690602001356115d2565b34801561063c57600080fd5b5061028a6004803603604081101561065357600080fd5b506001600160a01b0381351690602001356116be565b34801561067557600080fd5b5061028a6004803603604081101561068c57600080fd5b508035906020013561175c565b3480156106a557600080fd5b506102dd600480360360208110156106bc57600080fd5b50356001600160a01b0316611860565b3480156106d857600080fd5b5061028a600480360360608110156106ef57600080fd5b6001600160a01b038235169160208101359181019060608101604082013564010000000081111561071f57600080fd5b82018360208201111561073157600080fd5b8035906020019184600183028401116401000000008311171561075357600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506118c4945050505050565b3480156107a057600080fd5b506105c6611a0c565b3480156107b557600080fd5b506107e2600480360360408110156107cc57600080fd5b506001600160a01b038135169060200135611a1b565b604080519384526020840192909252151582820152519081900360600190f35b34801561080e57600080fd5b5061028a6004803603604081101561082557600080fd5b506001600160a01b038135169060200135611a46565b34801561084757600080fd5b506102dd6004803603604081101561085e57600080fd5b506001600160a01b0381358116916020013516611ae9565b34801561088257600080fd5b5061057f6004803603602081101561089957600080fd5b50356001600160a01b0316611b14565b6005805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152929183018282801561092f5780601f106109045761010080835404028352916020019161092f565b820191906000526020600020905b81548152906001019060200180831161091257829003601f168201915b505050505081565b3360008181526009602090815260408083206001600160a01b038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a35060015b92915050565b6001600160a01b0383166000908152600160208181526040808420868552909152822001548210156109f057506001600160a01b03831660009081526001602090815260408083208584529091529020545b9392505050565b600080805260086020527f5eff886ea0ce6ca488a3d6e336d6c0f75f46d19b42c06ce5ee98e42c96d256c754600754610a359163ffffffff611b4d16565b905090565b6001600160a01b038316600090815260086020526040812054610a63908363ffffffff611b4d16565b6001600160a01b0385166000908152600860209081526040808320939093556009815282822033835290522054610aa0908363ffffffff611b4d16565b6001600160a01b038086166000908152600960209081526040808320338452825280832094909455918616815260089091522054610ae4908363ffffffff611b6216565b6001600160a01b038085166000818152600860209081526040918290209490945580518681529051919392881692600080516020611b9383398151915292918290030190a35060019392505050565b600080610b46428463ffffffff611b6216565b9050610b523386611342565b604080518082019091526015815274151bdad95b9cc8185b1c9958591e481b1bd8dad959605a1b60208201529015610c085760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610bcd578181015183820152602001610bb5565b50505050905090810190601f168015610bfa5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506040805180820190915260138152720416d6f756e742063616e206e6f74206265203606c1b602082015284610c7f5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610bcd578181015183820152602001610bb5565b50336000908152600160209081526040808320888452909152902054610cc05733600090815260208181526040822080546001810182559083529120018590555b610cca30856116be565b5060408051606081018252858152602080820184815260008385018181523380835260018086528784208d855286529287902095518655925191850191909155516002909301805460ff191693151593909317909255825187815290810184905282518893600080516020611b73833981519152928290030190a3506001949350505050565b600080805b6001600160a01b038416600090815260208190526040902054811015610ea2576001600160a01b03841660009081526020819052604090208054610daf91869184908110610d9f57fe5b90600052602060002001546112b9565b91508115610e9a57610dc7838363ffffffff611b6216565b6001600160a01b0385166000908152600160208181526040808420918490528320805494975091939092919085908110610dfd57fe5b60009182526020808320919091015483528281019390935260409182018120600201805460ff1916941515949094179093556001600160a01b0387168352908290529020805482908110610e4d57fe5b9060005260206000200154846001600160a01b03167f11f87fd5adcd05786919b8b868f59a70d78ae4eb6f305c5927f9c5b1659841a4846040518082815260200191505060405180910390a35b600101610d55565b508115610f25576040805163a9059cbb60e01b81526001600160a01b0385166004820152602481018490529051309163a9059cbb9160448083019260209291908290030181600087803b158015610ef857600080fd5b505af1158015610f0c573d6000803e3d6000fd5b505050506040513d6020811015610f2257600080fd5b50505b50919050565b60065460ff1681565b6002546000906001600160a01b03163314610f4e57600080fd5b6001600160a01b038316610fa9576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b600754610fbc908363ffffffff611b6216565b6007556001600160a01b038316600090815260086020526040902054610fe8908363ffffffff611b6216565b6001600160a01b0384166000818152600860209081526040808320949094558351868152935192939192600080516020611b938339815191529281900390910190a392915050565b600061103b82611399565b905060005b6001600160a01b038316600090815260208190526040902054811015610f25576110b36110a684600080876001600160a01b03166001600160a01b03168152602001908152602001600020848154811061109657fe5b9060005260206000200154611342565b839063ffffffff611b6216565b9150600101611040565b6000806110d0428463ffffffff611b6216565b90506110dc8686611342565b604080518082019091526015815274151bdad95b9cc8185b1c9958591e481b1bd8dad959605a1b602082015290156111555760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610bcd578181015183820152602001610bb5565b506040805180820190915260138152720416d6f756e742063616e206e6f74206265203606c1b6020820152846111cc5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610bcd578181015183820152602001610bb5565b506001600160a01b038616600090815260016020908152604080832088845290915290205461121f576001600160a01b038616600090815260208181526040822080546001810182559083529120018590555b61122930856116be565b5060408051606081018252858152602080820184815260008385018181526001600160a01b038c1680835260018086528784208d855286529287902095518655925191850191909155516002909301805460ff191693151593909317909255825187815290810184905282518893600080516020611b73833981519152928290030190a350600195945050505050565b6001600160a01b038216600090815260016020818152604080842085855290915282200154421080159061131457506001600160a01b038316600090815260016020908152604080832085845290915290206002015460ff16155b1561099857506001600160a01b03919091166000908152600160209081526040808320938352929052205490565b6001600160a01b038216600090815260016020908152604080832084845290915281206002015460ff1661099857506001600160a01b03919091166000908152600160209081526040808320938352929052205490565b6001600160a01b031660009081526008602052604090205490565b600060205281600052604060002081815481106113cd57fe5b90600052602060002001600091509150505481565b6003546001600160a01b031633146113f957600080fd5b6003546002546040516001600160a01b0392831692909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a360038054600280546001600160a01b03199081166001600160a01b03841617909155169055565b60008061146c3385611342565b116040518060400160405280601081526020016f139bc81d1bdad95b9cc81b1bd8dad95960821b815250906114e25760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610bcd578181015183820152602001610bb5565b506114ed30836116be565b50336000908152600160209081526040808320868452909152902054611519908363ffffffff611b6216565b3360008181526001602081815260408084208985528252928390208581559091015482519485529084015280518693600080516020611b7383398151915292908290030190a350600192915050565b6002546001600160a01b031681565b6004805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152929183018282801561092f5780601f106109045761010080835404028352916020019161092f565b6002546000906001600160a01b031633146115ec57600080fd5b6001600160a01b0383166116315760405162461bcd60e51b8152600401808060200182810382526021815260200180611bb36021913960400191505060405180910390fd5b6001600160a01b03831660009081526008602052604090205461165a908363ffffffff611b4d16565b6001600160a01b038416600090815260086020526040902055600754611686908363ffffffff611b4d16565b6007556040805183815290516000916001600160a01b03861691600080516020611b938339815191529181900360200190a392915050565b336000908152600860205260408120546116de908363ffffffff611b4d16565b33600090815260086020526040808220929092556001600160a01b03851681522054611710908363ffffffff611b6216565b6001600160a01b038416600081815260086020908152604091829020939093558051858152905191923392600080516020611b938339815191529281900390910190a350600192915050565b6000806117693385611342565b116040518060400160405280601081526020016f139bc81d1bdad95b9cc81b1bd8dad95960821b815250906117df5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610bcd578181015183820152602001610bb5565b50336000908152600160208181526040808420878552909152909120015461180d908363ffffffff611b6216565b336000818152600160208181526040808420898552825292839020918201859055905482519081529081019390935280518693600080516020611b7383398151915292908290030190a350600192915050565b6000805b6001600160a01b038316600090815260208190526040902054811015610f25576118ba6110a684600080876001600160a01b03166001600160a01b031681526020019081526020016000208481548110610d9f57fe5b9150600101611864565b3360008181526009602090815260408083206001600160a01b038816808552908352818420879055815187815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a3604051638f4ffcb160e01b815233600482018181526024830186905230604484018190526080606485019081528651608486015286516001600160a01b038a1695638f4ffcb195948a94938a939192909160a490910190602085019080838360005b8381101561199b578181015183820152602001611983565b50505050905090810190601f1680156119c85780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b1580156119ea57600080fd5b505af11580156119fe573d6000803e3d6000fd5b506001979650505050505050565b6003546001600160a01b031681565b6001602081815260009384526040808520909152918352912080549181015460029091015460ff1683565b6002546000906001600160a01b03163314611a6057600080fd5b6002546040805163a9059cbb60e01b81526001600160a01b0392831660048201526024810185905290519185169163a9059cbb916044808201926020929091908290030181600087803b158015611ab657600080fd5b505af1158015611aca573d6000803e3d6000fd5b505050506040513d6020811015611ae057600080fd5b50519392505050565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b6002546001600160a01b03163314611b2b57600080fd5b600380546001600160a01b0319166001600160a01b0392909216919091179055565b600082821115611b5c57600080fd5b50900390565b8181018281101561099857600080fdfeea90ef40963535482537f0689e05cb8d259e459ebd21530e826702294d0eafddddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a206275726e2066726f6d20746865207a65726f2061646472657373a265627a7a723158206faf8a67038a66651f7a70bd31af108be36ae9896db2f4185b49a72f85b5379d64736f6c634300050c0032
Deployed Bytecode
0x6080604052600436106101c25760003560e01c806371d66f00116100f7578063a9dab16711610095578063d71be8db11610064578063d71be8db146107a9578063dc39d06d14610802578063dd62ed3e1461083b578063f2fde38b14610876576101c2565b8063a9dab16714610669578063ab4a2eb314610699578063cae9ca51146106cc578063d4ee1d9014610794576101c2565b80638da5cb5b116100d15780638da5cb5b146105b157806395d89b41146105e25780639dc29fac146105f7578063a9059cbb14610630576101c2565b806371d66f001461053157806379ba50971461056a57806381fc4d9014610581576101c2565b8063313ce567116101645780634cb5465f1161013e5780634cb5465f146104475780635294d0e81461048c5780635ca48d8c146104c557806370a08231146104fe576101c2565b8063313ce567146103b057806340c10f19146103db5780634b0ee02a14610414576101c2565b806318160ddd116101a057806318160ddd146102ef57806323b872dd146103045780632e82aaf2146103475780632f6c493c1461037d576101c2565b806306fdde03146101c7578063095ea7b314610251578063179e91f11461029e575b600080fd5b3480156101d357600080fd5b506101dc6108a9565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102165781810151838201526020016101fe565b50505050905090810190601f1680156102435780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561025d57600080fd5b5061028a6004803603604081101561027457600080fd5b506001600160a01b038135169060200135610937565b604080519115158252519081900360200190f35b3480156102aa57600080fd5b506102dd600480360360608110156102c157600080fd5b506001600160a01b03813516906020810135906040013561099e565b60408051918252519081900360200190f35b3480156102fb57600080fd5b506102dd6109f7565b34801561031057600080fd5b5061028a6004803603606081101561032757600080fd5b506001600160a01b03813581169160208101359091169060400135610a3a565b34801561035357600080fd5b5061028a6004803603606081101561036a57600080fd5b5080359060208101359060400135610b33565b34801561038957600080fd5b506102dd600480360360208110156103a057600080fd5b50356001600160a01b0316610d50565b3480156103bc57600080fd5b506103c5610f2b565b6040805160ff9092168252519081900360200190f35b3480156103e757600080fd5b5061028a600480360360408110156103fe57600080fd5b506001600160a01b038135169060200135610f34565b34801561042057600080fd5b506102dd6004803603602081101561043757600080fd5b50356001600160a01b0316611030565b34801561045357600080fd5b5061028a6004803603608081101561046a57600080fd5b506001600160a01b0381351690602081013590604081013590606001356110bd565b34801561049857600080fd5b506102dd600480360360408110156104af57600080fd5b506001600160a01b0381351690602001356112b9565b3480156104d157600080fd5b506102dd600480360360408110156104e857600080fd5b506001600160a01b038135169060200135611342565b34801561050a57600080fd5b506102dd6004803603602081101561052157600080fd5b50356001600160a01b0316611399565b34801561053d57600080fd5b506102dd6004803603604081101561055457600080fd5b506001600160a01b0381351690602001356113b4565b34801561057657600080fd5b5061057f6113e2565b005b34801561058d57600080fd5b5061028a600480360360408110156105a457600080fd5b508035906020013561145f565b3480156105bd57600080fd5b506105c6611568565b604080516001600160a01b039092168252519081900360200190f35b3480156105ee57600080fd5b506101dc611577565b34801561060357600080fd5b5061028a6004803603604081101561061a57600080fd5b506001600160a01b0381351690602001356115d2565b34801561063c57600080fd5b5061028a6004803603604081101561065357600080fd5b506001600160a01b0381351690602001356116be565b34801561067557600080fd5b5061028a6004803603604081101561068c57600080fd5b508035906020013561175c565b3480156106a557600080fd5b506102dd600480360360208110156106bc57600080fd5b50356001600160a01b0316611860565b3480156106d857600080fd5b5061028a600480360360608110156106ef57600080fd5b6001600160a01b038235169160208101359181019060608101604082013564010000000081111561071f57600080fd5b82018360208201111561073157600080fd5b8035906020019184600183028401116401000000008311171561075357600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506118c4945050505050565b3480156107a057600080fd5b506105c6611a0c565b3480156107b557600080fd5b506107e2600480360360408110156107cc57600080fd5b506001600160a01b038135169060200135611a1b565b604080519384526020840192909252151582820152519081900360600190f35b34801561080e57600080fd5b5061028a6004803603604081101561082557600080fd5b506001600160a01b038135169060200135611a46565b34801561084757600080fd5b506102dd6004803603604081101561085e57600080fd5b506001600160a01b0381358116916020013516611ae9565b34801561088257600080fd5b5061057f6004803603602081101561089957600080fd5b50356001600160a01b0316611b14565b6005805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152929183018282801561092f5780601f106109045761010080835404028352916020019161092f565b820191906000526020600020905b81548152906001019060200180831161091257829003601f168201915b505050505081565b3360008181526009602090815260408083206001600160a01b038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a35060015b92915050565b6001600160a01b0383166000908152600160208181526040808420868552909152822001548210156109f057506001600160a01b03831660009081526001602090815260408083208584529091529020545b9392505050565b600080805260086020527f5eff886ea0ce6ca488a3d6e336d6c0f75f46d19b42c06ce5ee98e42c96d256c754600754610a359163ffffffff611b4d16565b905090565b6001600160a01b038316600090815260086020526040812054610a63908363ffffffff611b4d16565b6001600160a01b0385166000908152600860209081526040808320939093556009815282822033835290522054610aa0908363ffffffff611b4d16565b6001600160a01b038086166000908152600960209081526040808320338452825280832094909455918616815260089091522054610ae4908363ffffffff611b6216565b6001600160a01b038085166000818152600860209081526040918290209490945580518681529051919392881692600080516020611b9383398151915292918290030190a35060019392505050565b600080610b46428463ffffffff611b6216565b9050610b523386611342565b604080518082019091526015815274151bdad95b9cc8185b1c9958591e481b1bd8dad959605a1b60208201529015610c085760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610bcd578181015183820152602001610bb5565b50505050905090810190601f168015610bfa5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506040805180820190915260138152720416d6f756e742063616e206e6f74206265203606c1b602082015284610c7f5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610bcd578181015183820152602001610bb5565b50336000908152600160209081526040808320888452909152902054610cc05733600090815260208181526040822080546001810182559083529120018590555b610cca30856116be565b5060408051606081018252858152602080820184815260008385018181523380835260018086528784208d855286529287902095518655925191850191909155516002909301805460ff191693151593909317909255825187815290810184905282518893600080516020611b73833981519152928290030190a3506001949350505050565b600080805b6001600160a01b038416600090815260208190526040902054811015610ea2576001600160a01b03841660009081526020819052604090208054610daf91869184908110610d9f57fe5b90600052602060002001546112b9565b91508115610e9a57610dc7838363ffffffff611b6216565b6001600160a01b0385166000908152600160208181526040808420918490528320805494975091939092919085908110610dfd57fe5b60009182526020808320919091015483528281019390935260409182018120600201805460ff1916941515949094179093556001600160a01b0387168352908290529020805482908110610e4d57fe5b9060005260206000200154846001600160a01b03167f11f87fd5adcd05786919b8b868f59a70d78ae4eb6f305c5927f9c5b1659841a4846040518082815260200191505060405180910390a35b600101610d55565b508115610f25576040805163a9059cbb60e01b81526001600160a01b0385166004820152602481018490529051309163a9059cbb9160448083019260209291908290030181600087803b158015610ef857600080fd5b505af1158015610f0c573d6000803e3d6000fd5b505050506040513d6020811015610f2257600080fd5b50505b50919050565b60065460ff1681565b6002546000906001600160a01b03163314610f4e57600080fd5b6001600160a01b038316610fa9576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b600754610fbc908363ffffffff611b6216565b6007556001600160a01b038316600090815260086020526040902054610fe8908363ffffffff611b6216565b6001600160a01b0384166000818152600860209081526040808320949094558351868152935192939192600080516020611b938339815191529281900390910190a392915050565b600061103b82611399565b905060005b6001600160a01b038316600090815260208190526040902054811015610f25576110b36110a684600080876001600160a01b03166001600160a01b03168152602001908152602001600020848154811061109657fe5b9060005260206000200154611342565b839063ffffffff611b6216565b9150600101611040565b6000806110d0428463ffffffff611b6216565b90506110dc8686611342565b604080518082019091526015815274151bdad95b9cc8185b1c9958591e481b1bd8dad959605a1b602082015290156111555760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610bcd578181015183820152602001610bb5565b506040805180820190915260138152720416d6f756e742063616e206e6f74206265203606c1b6020820152846111cc5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610bcd578181015183820152602001610bb5565b506001600160a01b038616600090815260016020908152604080832088845290915290205461121f576001600160a01b038616600090815260208181526040822080546001810182559083529120018590555b61122930856116be565b5060408051606081018252858152602080820184815260008385018181526001600160a01b038c1680835260018086528784208d855286529287902095518655925191850191909155516002909301805460ff191693151593909317909255825187815290810184905282518893600080516020611b73833981519152928290030190a350600195945050505050565b6001600160a01b038216600090815260016020818152604080842085855290915282200154421080159061131457506001600160a01b038316600090815260016020908152604080832085845290915290206002015460ff16155b1561099857506001600160a01b03919091166000908152600160209081526040808320938352929052205490565b6001600160a01b038216600090815260016020908152604080832084845290915281206002015460ff1661099857506001600160a01b03919091166000908152600160209081526040808320938352929052205490565b6001600160a01b031660009081526008602052604090205490565b600060205281600052604060002081815481106113cd57fe5b90600052602060002001600091509150505481565b6003546001600160a01b031633146113f957600080fd5b6003546002546040516001600160a01b0392831692909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a360038054600280546001600160a01b03199081166001600160a01b03841617909155169055565b60008061146c3385611342565b116040518060400160405280601081526020016f139bc81d1bdad95b9cc81b1bd8dad95960821b815250906114e25760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610bcd578181015183820152602001610bb5565b506114ed30836116be565b50336000908152600160209081526040808320868452909152902054611519908363ffffffff611b6216565b3360008181526001602081815260408084208985528252928390208581559091015482519485529084015280518693600080516020611b7383398151915292908290030190a350600192915050565b6002546001600160a01b031681565b6004805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152929183018282801561092f5780601f106109045761010080835404028352916020019161092f565b6002546000906001600160a01b031633146115ec57600080fd5b6001600160a01b0383166116315760405162461bcd60e51b8152600401808060200182810382526021815260200180611bb36021913960400191505060405180910390fd5b6001600160a01b03831660009081526008602052604090205461165a908363ffffffff611b4d16565b6001600160a01b038416600090815260086020526040902055600754611686908363ffffffff611b4d16565b6007556040805183815290516000916001600160a01b03861691600080516020611b938339815191529181900360200190a392915050565b336000908152600860205260408120546116de908363ffffffff611b4d16565b33600090815260086020526040808220929092556001600160a01b03851681522054611710908363ffffffff611b6216565b6001600160a01b038416600081815260086020908152604091829020939093558051858152905191923392600080516020611b938339815191529281900390910190a350600192915050565b6000806117693385611342565b116040518060400160405280601081526020016f139bc81d1bdad95b9cc81b1bd8dad95960821b815250906117df5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610bcd578181015183820152602001610bb5565b50336000908152600160208181526040808420878552909152909120015461180d908363ffffffff611b6216565b336000818152600160208181526040808420898552825292839020918201859055905482519081529081019390935280518693600080516020611b7383398151915292908290030190a350600192915050565b6000805b6001600160a01b038316600090815260208190526040902054811015610f25576118ba6110a684600080876001600160a01b03166001600160a01b031681526020019081526020016000208481548110610d9f57fe5b9150600101611864565b3360008181526009602090815260408083206001600160a01b038816808552908352818420879055815187815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a3604051638f4ffcb160e01b815233600482018181526024830186905230604484018190526080606485019081528651608486015286516001600160a01b038a1695638f4ffcb195948a94938a939192909160a490910190602085019080838360005b8381101561199b578181015183820152602001611983565b50505050905090810190601f1680156119c85780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b1580156119ea57600080fd5b505af11580156119fe573d6000803e3d6000fd5b506001979650505050505050565b6003546001600160a01b031681565b6001602081815260009384526040808520909152918352912080549181015460029091015460ff1683565b6002546000906001600160a01b03163314611a6057600080fd5b6002546040805163a9059cbb60e01b81526001600160a01b0392831660048201526024810185905290519185169163a9059cbb916044808201926020929091908290030181600087803b158015611ab657600080fd5b505af1158015611aca573d6000803e3d6000fd5b505050506040513d6020811015611ae057600080fd5b50519392505050565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b6002546001600160a01b03163314611b2b57600080fd5b600380546001600160a01b0319166001600160a01b0392909216919091179055565b600082821115611b5c57600080fd5b50900390565b8181018281101561099857600080fdfeea90ef40963535482537f0689e05cb8d259e459ebd21530e826702294d0eafddddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a206275726e2066726f6d20746865207a65726f2061646472657373a265627a7a723158206faf8a67038a66651f7a70bd31af108be36ae9896db2f4185b49a72f85b5379d64736f6c634300050c0032
Deployed Bytecode Sourcemap
6975:13310:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12176:8;;;7298:19;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7298:19:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;7298:19:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9709:208;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9709:208:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;9709:208:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;16462:253;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16462:253:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;16462:253:0;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;8114:114;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8114:114:0;;;:::i;10460:343::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10460:343:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;10460:343:0;;;;;;;;;;;;;;;;;:::i;13910:763::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13910:763:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13910:763:0;;;;;;;;;;;;:::i;19162:631::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19162:631:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19162:631:0;-1:-1:-1;;;;;19162:631:0;;:::i;7324:21::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7324:21:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12626:328;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12626:328:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;12626:328:0;;;;;;;;:::i;16879:301::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16879:301:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16879:301:0;-1:-1:-1;;;;;16879:301:0;;:::i;15033:624::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15033:624:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;15033:624:0;;;;;;;;;;;;;;;;;;:::i;18711:291::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18711:291:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;18711:291:0;;;;;;;;:::i;15904:224::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15904:224:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;15904:224:0;;;;;;;;:::i;8455:120::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8455:120:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8455:120:0;-1:-1:-1;;;;;8455:120:0;;:::i;3035:47::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3035:47:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;3035:47:0;;;;;;;;:::i;2732:196::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2732:196:0;;;:::i;:::-;;17991:465;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17991:465:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17991:465:0;;;;;;;:::i;2302:20::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2302:20:0;;;:::i;:::-;;;;-1:-1:-1;;;;;2302:20:0;;;;;;;;;;;;;;7271;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7271:20:0;;;:::i;13286:330::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13286:330:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;13286:330:0;;;;;;;;:::i;8926:267::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8926:267:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;8926:267:0;;;;;;;;:::i;17373:414::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17373:414:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17373:414:0;;;;;;;:::i;19956:303::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19956:303:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19956:303:0;-1:-1:-1;;;;;19956:303:0;;:::i;11606:333::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11606:333:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;11606:333:0;;;;;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;11606:333:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;11606:333:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;11606:333:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;11606:333:0;;-1:-1:-1;11606:333:0;;-1:-1:-1;;;;;11606:333:0:i;2329:23::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2329:23:0;;;:::i;3381:63::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3381:63:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;3381:63:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12430:184;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12430:184:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;12430:184:0;;;;;;;;:::i;11091:147::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11091:147:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;11091:147:0;;;;;;;;;;:::i;2624:102::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2624:102:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2624:102:0;-1:-1:-1;;;;;2624:102:0;;:::i;7298:19::-;;;;;;;;;;;;;;;-1:-1:-1;;7298:19:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;9709:208::-;9805:10;9772:12;9797:19;;;:7;:19;;;;;;;;-1:-1:-1;;;;;9797:28:0;;;;;;;;;;;:37;;;9850;;;;;;;9772:12;;9797:28;;9805:10;;9850:37;;;;;;;;-1:-1:-1;9905:4:0;9709:208;;;;;:::o;16462:253::-;-1:-1:-1;;;;;16619:11:0;;16583:14;16619:11;;;:6;:11;;;;;;;;:20;;;;;;;;:29;;:37;-1:-1:-1;16615:92:0;;;-1:-1:-1;;;;;;16680:11:0;;;;;;:6;:11;;;;;;;;:20;;;;;;;;:27;16615:92;16462:253;;;;;:::o;8114:114::-;8158:4;8199:20;;;:8;:20;;;;8182:12;;:38;;;:16;:38;:::i;:::-;8175:45;;8114:114;:::o;10460:343::-;-1:-1:-1;;;;;10579:14:0;;10537:12;10579:14;;;:8;:14;;;;;;:26;;10598:6;10579:26;:18;:26;:::i;:::-;-1:-1:-1;;;;;10562:14:0;;;;;;:8;:14;;;;;;;;:43;;;;10644:7;:13;;;;;10658:10;10644:25;;;;;;:37;;10674:6;10644:37;:29;:37;:::i;:::-;-1:-1:-1;;;;;10616:13:0;;;;;;;:7;:13;;;;;;;;10630:10;10616:25;;;;;;;:65;;;;10707:12;;;;;:8;:12;;;;;:24;;10724:6;10707:24;:16;:24;:::i;:::-;-1:-1:-1;;;;;10692:12:0;;;;;;;:8;:12;;;;;;;;;:39;;;;10747:26;;;;;;;10692:12;;10747:26;;;;-1:-1:-1;;;;;;;;;;;10747:26:0;;;;;;;;-1:-1:-1;10791:4:0;10460:343;;;;;:::o;13910:763::-;14007:4;;14050:14;:3;14058:5;14050:14;:7;:14;:::i;:::-;14029:35;;14245:33;14258:10;14270:7;14245:12;:33::i;:::-;14285:14;;;;;;;;;;;;-1:-1:-1;;;14285:14:0;;;;;14245:38;14237:63;;;;-1:-1:-1;;;14237:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;14237:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14333:11:0;;;;;;;;;;;;-1:-1:-1;;;14333:11:0;;;;14319:12;14311:34;;;;-1:-1:-1;;;14311:34:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;14311:34:0;-1:-1:-1;14369:10:0;14362:18;;;;:6;:18;;;;;;;;:27;;;;;;;;:34;14358:94;;14427:10;14416;:22;;;;;;;;;;27:10:-1;;39:1;23:18;;45:23;;14416:36:0;;;;;;;;;14358:94;14465:32;14482:4;14489:7;14465:8;:32::i;:::-;-1:-1:-1;14540:37:0;;;;;;;;;;;;;;;;;;-1:-1:-1;14540:37:0;;;;;;14517:10;14510:18;;;14540:37;14510:18;;;;;;:27;;;;;;;;;:67;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;14510:67:0;;;;;;;;;;;14595:48;;;;;;;;;;;;;14510:27;;-1:-1:-1;;;;;;;;;;;14595:48:0;;;;;;;-1:-1:-1;14661:4:0;;13910:763;-1:-1:-1;;;;13910:763:0:o;19162:631::-;19225:24;;;19300:396;-1:-1:-1;;;;;19324:15:0;;:10;:15;;;;;;;;;;:22;19320:26;;19300:396;;;-1:-1:-1;;;;;19405:15:0;;:10;:15;;;;;;;;;;:18;;19383:41;;19400:3;;19421:1;;19405:18;;;;;;;;;;;;;;19383:16;:41::i;:::-;19368:56;-1:-1:-1;19443:16:0;;19439:246;;19499:34;:16;19520:12;19499:34;:20;:34;:::i;:::-;-1:-1:-1;;;;;19552:11:0;;;;;;19594:4;19552:11;;;;;;;;19564:15;;;;;;:18;;19480:53;;-1:-1:-1;19594:4:0;;19552:11;;;19564:15;19580:1;;19564:18;;;;;;;;;;;;;;;;;;;19552:31;;;;;;;;;;;;;;;:39;;:46;;-1:-1:-1;;19552:46:0;;;;;;;;;;;-1:-1:-1;;;;;19636:15:0;;;;;;;;;;:18;;19652:1;;19636:18;;;;;;;;;;;;;;19631:3;-1:-1:-1;;;;;19622:47:0;;19656:12;19622:47;;;;;;;;;;;;;;;;;;19439:246;19348:3;;19300:396;;;-1:-1:-1;19714:20:0;;19710:75;;19749:36;;;-1:-1:-1;;;19749:36:0;;-1:-1:-1;;;;;19749:36:0;;;;;;;;;;;;;;:4;;:13;;:36;;;;;;;;;;;;;;-1:-1:-1;19749:4:0;:36;;;5:2:-1;;;;30:1;27;20:12;5:2;19749:36:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19749:36:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;19710:75:0;19162:631;;;;:::o;7324:21::-;;;;;;:::o;12626:328::-;2590:5;;12699:4;;-1:-1:-1;;;;;2590:5:0;2576:10;:19;2568:28;;;;;;-1:-1:-1;;;;;12724:21:0;;12716:65;;;;;-1:-1:-1;;;12716:65:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;12809:12;;:24;;12826:6;12809:24;:16;:24;:::i;:::-;12794:12;:39;-1:-1:-1;;;;;12864:17:0;;;;;;:8;:17;;;;;;:29;;12886:6;12864:29;:21;:29;:::i;:::-;-1:-1:-1;;;;;12844:17:0;;;;;;:8;:17;;;;;;;;:49;;;;12909:37;;;;;;;12844:17;;;;-1:-1:-1;;;;;;;;;;;12909:37:0;;;;;;;;;12626:328;;;;:::o;16879:301::-;16964:14;17005;17015:3;17005:9;:14::i;:::-;16996:23;-1:-1:-1;17037:9:0;17032:138;-1:-1:-1;;;;;17056:15:0;;:10;:15;;;;;;;;;;:22;17052:26;;17032:138;;;17109:49;17120:37;17133:3;17138:10;:15;17149:3;-1:-1:-1;;;;;17138:15:0;-1:-1:-1;;;;;17138:15:0;;;;;;;;;;;;17154:1;17138:18;;;;;;;;;;;;;;;;17120:12;:37::i;:::-;17109:6;;:49;:10;:49;:::i;:::-;17100:58;-1:-1:-1;17080:3:0;;17032:138;;15033:624;15155:4;;15198:14;:3;15206:5;15198:14;:7;:14;:::i;:::-;15177:35;;15256:26;15269:3;15274:7;15256:12;:26::i;:::-;15289:14;;;;;;;;;;;;-1:-1:-1;;;15289:14:0;;;;;15256:31;15248:56;;;;-1:-1:-1;;;15248:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;15248:56:0;-1:-1:-1;15337:11:0;;;;;;;;;;;;-1:-1:-1;;;15337:11:0;;;;15323:12;15315:34;;;;-1:-1:-1;;;15315:34:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;15315:34:0;-1:-1:-1;;;;;;15366:11:0;;;;;;:6;:11;;;;;;;;:20;;;;;;;;:27;15362:80;;-1:-1:-1;;;;;15413:15:0;;:10;:15;;;;;;;;;;27:10:-1;;39:1;23:18;;45:23;;15413:29:0;;;;;;;;;15362:80;15455:32;15472:4;15479:7;15455:8;:32::i;:::-;-1:-1:-1;15523:37:0;;;;;;;;;;;;;;;;;;-1:-1:-1;15523:37:0;;;;;;-1:-1:-1;;;;;15500:11:0;;;;;15523:37;15500:11;;;;;;:20;;;;;;;;;:60;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15500:60:0;;;;;;;;;;;15586:41;;;;;;;;;;;;;15500:20;;-1:-1:-1;;;;;;;;;;;15586:41:0;;;;;;;-1:-1:-1;15645:4:0;;15033:624;-1:-1:-1;;;;;15033:624:0:o;18711:291::-;-1:-1:-1;;;;;18851:11:0;;18815:14;18851:11;;;:6;:11;;;;;;;;:20;;;;;;;;:29;;18884:3;-1:-1:-1;18851:36:0;;;:69;;-1:-1:-1;;;;;;18892:11:0;;;;;;:6;:11;;;;;;;;:20;;;;;;;;:28;;;;;18891:29;18851:69;18847:147;;;-1:-1:-1;;;;;;18967:11:0;;;;;;;;:6;:11;;;;;;;;:20;;;;;;;:27;;18711:291::o;15904:224::-;-1:-1:-1;;;;;16041:11:0;;16004:14;16041:11;;;:6;:11;;;;;;;;:20;;;;;;;;:28;;;;;16036:84;;-1:-1:-1;;;;;;16093:11:0;;;;;;;;:6;:11;;;;;;;;:20;;;;;;;:27;;15904:224::o;8455:120::-;-1:-1:-1;;;;;8547:20:0;8515:12;8547:20;;;:8;:20;;;;;;;8455:120::o;3035:47::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2732:196::-;2799:8;;-1:-1:-1;;;;;2799:8:0;2785:10;:22;2777:31;;;;;;2852:8;;2845:5;;2824:37;;-1:-1:-1;;;;;2852:8:0;;;;2845:5;;;;2824:37;;2852:8;;2824:37;2880:8;;;2872:5;:16;;-1:-1:-1;;;;;;2872:16:0;;;-1:-1:-1;;;;;2880:8:0;;2872:16;;;;2899:21;;;2732:196::o;17991:465::-;18087:4;18153:1;18117:33;18130:10;18142:7;18117:12;:33::i;:::-;:37;18156:10;;;;;;;;;;;;;-1:-1:-1;;;18156:10:0;;;18109:58;;;;;-1:-1:-1;;;18109:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;18109:58:0;;18178:32;18195:4;18202:7;18178:8;:32::i;:::-;-1:-1:-1;18267:10:0;18260:18;;;;:6;:18;;;;;;;;:27;;;;;;;;:34;:47;;18299:7;18260:47;:38;:47;:::i;:::-;18230:10;18223:18;;;;:6;:18;;;;;;;;:27;;;;;;;;;:84;;;18389:36;;;;18325:101;;;;;;;;;;;18223:27;;-1:-1:-1;;;;;;;;;;;18325:101:0;;;;;;;;-1:-1:-1;18444:4:0;17991:465;;;;:::o;2302:20::-;;;-1:-1:-1;;;;;2302:20:0;;:::o;7271:::-;;;;;;;;;;;;;;;-1:-1:-1;;7271:20:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13286:330;2590:5;;13359:4;;-1:-1:-1;;;;;2590:5:0;2576:10;:19;2568:28;;;;;;-1:-1:-1;;;;;13384:21:0;;13376:67;;;;-1:-1:-1;;;13376:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13476:17:0;;;;;;:8;:17;;;;;;:29;;13498:6;13476:29;:21;:29;:::i;:::-;-1:-1:-1;;;;;13456:17:0;;;;;;:8;:17;;;;;:49;13531:12;;:24;;13548:6;13531:24;:16;:24;:::i;:::-;13516:12;:39;13571:37;;;;;;;;13597:1;;-1:-1:-1;;;;;13571:37:0;;;-1:-1:-1;;;;;;;;;;;13571:37:0;;;;;;;;13286:330;;;;:::o;8926:267::-;9042:10;8985:12;9033:20;;;:8;:20;;;;;;:32;;9058:6;9033:32;:24;:32;:::i;:::-;9019:10;9010:20;;;;:8;:20;;;;;;:55;;;;-1:-1:-1;;;;;9091:12:0;;;;;;:24;;9108:6;9091:24;:16;:24;:::i;:::-;-1:-1:-1;;;;;9076:12:0;;;;;;:8;:12;;;;;;;;;:39;;;;9131:32;;;;;;;9076:12;;9140:10;;-1:-1:-1;;;;;;;;;;;9131:32:0;;;;;;;;;-1:-1:-1;9181:4:0;8926:267;;;;:::o;17373:414::-;17459:4;17525:1;17489:33;17502:10;17514:7;17489:12;:33::i;:::-;:37;17528:10;;;;;;;;;;;;;-1:-1:-1;;;17528:10:0;;;17481:58;;;;;-1:-1:-1;;;17481:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;17481:58:0;-1:-1:-1;17598:10:0;17591:18;;;;:6;:18;;;;;;;;:27;;;;;;;;;:36;;:47;;17632:5;17591:47;:40;:47;:::i;:::-;17559:10;17552:18;;;;:6;:18;;;;;;;;:27;;;;;;;;;:36;;;:86;;;17684:34;;17656:101;;;;;;;;;;;;;;17552:27;;-1:-1:-1;;;;;;;;;;;17656:101:0;;;;;;;;-1:-1:-1;17775:4:0;17373:414;;;;:::o;19956:303::-;20046:24;;20088:162;-1:-1:-1;;;;;20112:15:0;;:10;:15;;;;;;;;;;:22;20108:26;;20088:162;;;20175:63;20196:41;20213:3;20218:10;:15;20229:3;-1:-1:-1;;;;;20218:15:0;-1:-1:-1;;;;;20218:15:0;;;;;;;;;;;;20234:1;20218:18;;;;;;;20175:63;20156:82;-1:-1:-1;20136:3:0;;20088:162;;11606:333;11728:10;11695:12;11720:19;;;:7;:19;;;;;;;;-1:-1:-1;;;;;11720:28:0;;;;;;;;;;;:37;;;11773;;;;;;;11695:12;;11720:28;;11728:10;;11773:37;;;;;;;;11821:88;;-1:-1:-1;;;11821:88:0;;11869:10;11821:88;;;;;;;;;;;;11897:4;11821:88;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11821:47:0;;;;;11869:10;11881:6;;11897:4;11904;;11821:88;;;;;;;;;;;;;;;;-1:-1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;11821:88:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11821:88:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;11927:4:0;;11606:333;-1:-1:-1;;;;;;;11606:333:0:o;2329:23::-;;;-1:-1:-1;;;;;2329:23:0;;:::o;3381:63::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;12430:184::-;2590:5;;12522:12;;-1:-1:-1;;;;;2590:5:0;2576:10;:19;2568:28;;;;;;12592:5;;12554:52;;;-1:-1:-1;;;12554:52:0;;-1:-1:-1;;;;;12592:5:0;;;12554:52;;;;;;;;;;;;:37;;;;;;:52;;;;;;;;;;;;;;;12592:5;12554:37;:52;;;5:2:-1;;;;30:1;27;20:12;5:2;12554:52:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12554:52:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12554:52:0;;12430:184;-1:-1:-1;;;12430:184:0:o;11091:147::-;-1:-1:-1;;;;;11202:19:0;;;11168:14;11202:19;;;:7;:19;;;;;;;;:28;;;;;;;;;;;;;11091:147::o;2624:102::-;2590:5;;-1:-1:-1;;;;;2590:5:0;2576:10;:19;2568:28;;;;;;2698:8;:20;;-1:-1:-1;;;;;;2698:20:0;-1:-1:-1;;;;;2698:20:0;;;;;;;;;;2624:102::o;350:114::-;402:6;434:1;429;:6;;421:15;;;;;;-1:-1:-1;451:5:0;;;350:114::o;230:::-;305:5;;;329:6;;;;321:15;;;;
Swarm Source
bzzr://6faf8a67038a66651f7a70bd31af108be36ae9896db2f4185b49a72f85b5379d
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.