ERC-20
DeFi
Overview
Max Total Supply
839,307.956291304760351286 nICE
Holders
1,602 (0.00%)
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
198.503622935031644876 nICEValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
nICE
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-07-09 */ // SPDX-License-Identifier: MIXED // File @boringcrypto/boring-solidity/contracts/libraries/[email protected] // License-Identifier: MIT pragma solidity 0.6.12; pragma experimental ABIEncoderV2; /// @notice A library for performing overflow-/underflow-safe math, /// updated with awesomeness from of DappHub (https://github.com/dapphub/ds-math). library BoringMath { function add(uint256 a, uint256 b) internal pure returns (uint256 c) { require((c = a + b) >= b, "BoringMath: Add Overflow"); } function sub(uint256 a, uint256 b) internal pure returns (uint256 c) { require((c = a - b) <= a, "BoringMath: Underflow"); } function mul(uint256 a, uint256 b) internal pure returns (uint256 c) { require(b == 0 || (c = a * b) / b == a, "BoringMath: Mul Overflow"); } function to128(uint256 a) internal pure returns (uint128 c) { require(a <= uint128(-1), "BoringMath: uint128 Overflow"); c = uint128(a); } function to64(uint256 a) internal pure returns (uint64 c) { require(a <= uint64(-1), "BoringMath: uint64 Overflow"); c = uint64(a); } function to32(uint256 a) internal pure returns (uint32 c) { require(a <= uint32(-1), "BoringMath: uint32 Overflow"); c = uint32(a); } } /// @notice A library for performing overflow-/underflow-safe addition and subtraction on uint128. library BoringMath128 { function add(uint128 a, uint128 b) internal pure returns (uint128 c) { require((c = a + b) >= b, "BoringMath: Add Overflow"); } function sub(uint128 a, uint128 b) internal pure returns (uint128 c) { require((c = a - b) <= a, "BoringMath: Underflow"); } } /// @notice A library for performing overflow-/underflow-safe addition and subtraction on uint64. library BoringMath64 { function add(uint64 a, uint64 b) internal pure returns (uint64 c) { require((c = a + b) >= b, "BoringMath: Add Overflow"); } function sub(uint64 a, uint64 b) internal pure returns (uint64 c) { require((c = a - b) <= a, "BoringMath: Underflow"); } } /// @notice A library for performing overflow-/underflow-safe addition and subtraction on uint32. library BoringMath32 { function add(uint32 a, uint32 b) internal pure returns (uint32 c) { require((c = a + b) >= b, "BoringMath: Add Overflow"); } function sub(uint32 a, uint32 b) internal pure returns (uint32 c) { require((c = a - b) <= a, "BoringMath: Underflow"); } } // File @boringcrypto/boring-solidity/contracts/interfaces/[email protected] // License-Identifier: MIT interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); /// @notice EIP 2612 function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external; } // File @boringcrypto/boring-solidity/contracts/libraries/[email protected] // License-Identifier: MIT // solhint-disable avoid-low-level-calls library BoringERC20 { bytes4 private constant SIG_SYMBOL = 0x95d89b41; // symbol() bytes4 private constant SIG_NAME = 0x06fdde03; // name() bytes4 private constant SIG_DECIMALS = 0x313ce567; // decimals() bytes4 private constant SIG_TRANSFER = 0xa9059cbb; // transfer(address,uint256) bytes4 private constant SIG_TRANSFER_FROM = 0x23b872dd; // transferFrom(address,address,uint256) function returnDataToString(bytes memory data) internal pure returns (string memory) { if (data.length >= 64) { return abi.decode(data, (string)); } else if (data.length == 32) { uint8 i = 0; while(i < 32 && data[i] != 0) { i++; } bytes memory bytesArray = new bytes(i); for (i = 0; i < 32 && data[i] != 0; i++) { bytesArray[i] = data[i]; } return string(bytesArray); } else { return "???"; } } /// @notice Provides a safe ERC20.symbol version which returns '???' as fallback string. /// @param token The address of the ERC-20 token contract. /// @return (string) Token symbol. function safeSymbol(IERC20 token) internal view returns (string memory) { (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(SIG_SYMBOL)); return success ? returnDataToString(data) : "???"; } /// @notice Provides a safe ERC20.name version which returns '???' as fallback string. /// @param token The address of the ERC-20 token contract. /// @return (string) Token name. function safeName(IERC20 token) internal view returns (string memory) { (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(SIG_NAME)); return success ? returnDataToString(data) : "???"; } /// @notice Provides a safe ERC20.decimals version which returns '18' as fallback value. /// @param token The address of the ERC-20 token contract. /// @return (uint8) Token decimals. function safeDecimals(IERC20 token) internal view returns (uint8) { (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(SIG_DECIMALS)); return success && data.length == 32 ? abi.decode(data, (uint8)) : 18; } /// @notice Provides a safe ERC20.transfer version for different ERC-20 implementations. /// Reverts on a failed transfer. /// @param token The address of the ERC-20 token. /// @param to Transfer tokens to. /// @param amount The token amount. function safeTransfer( IERC20 token, address to, uint256 amount ) internal { (bool success, bytes memory data) = address(token).call(abi.encodeWithSelector(SIG_TRANSFER, to, amount)); require(success && (data.length == 0 || abi.decode(data, (bool))), "BoringERC20: Transfer failed"); } /// @notice Provides a safe ERC20.transferFrom version for different ERC-20 implementations. /// Reverts on a failed transfer. /// @param token The address of the ERC-20 token. /// @param from Transfer tokens from. /// @param to Transfer tokens to. /// @param amount The token amount. function safeTransferFrom( IERC20 token, address from, address to, uint256 amount ) internal { (bool success, bytes memory data) = address(token).call(abi.encodeWithSelector(SIG_TRANSFER_FROM, from, to, amount)); require(success && (data.length == 0 || abi.decode(data, (bool))), "BoringERC20: TransferFrom failed"); } } // File @boringcrypto/boring-solidity/contracts/[email protected] // License-Identifier: MIT // Based on code and smartness by Ross Campbell and Keno // Uses immutable to store the domain separator to reduce gas usage // If the chain id changes due to a fork, the forked chain will calculate on the fly. // solhint-disable no-inline-assembly contract Domain { bytes32 private constant DOMAIN_SEPARATOR_SIGNATURE_HASH = keccak256("EIP712Domain(uint256 chainId,address verifyingContract)"); // See https://eips.ethereum.org/EIPS/eip-191 string private constant EIP191_PREFIX_FOR_EIP712_STRUCTURED_DATA = "\x19\x01"; // solhint-disable var-name-mixedcase bytes32 private immutable _DOMAIN_SEPARATOR; uint256 private immutable DOMAIN_SEPARATOR_CHAIN_ID; /// @dev Calculate the DOMAIN_SEPARATOR function _calculateDomainSeparator(uint256 chainId) private view returns (bytes32) { return keccak256( abi.encode( DOMAIN_SEPARATOR_SIGNATURE_HASH, chainId, address(this) ) ); } constructor() public { uint256 chainId; assembly {chainId := chainid()} _DOMAIN_SEPARATOR = _calculateDomainSeparator(DOMAIN_SEPARATOR_CHAIN_ID = chainId); } /// @dev Return the DOMAIN_SEPARATOR // It's named internal to allow making it public from the contract that uses it by creating a simple view function // with the desired public name, such as DOMAIN_SEPARATOR or domainSeparator. // solhint-disable-next-line func-name-mixedcase function _domainSeparator() internal view returns (bytes32) { uint256 chainId; assembly {chainId := chainid()} return chainId == DOMAIN_SEPARATOR_CHAIN_ID ? _DOMAIN_SEPARATOR : _calculateDomainSeparator(chainId); } function _getDigest(bytes32 dataHash) internal view returns (bytes32 digest) { digest = keccak256( abi.encodePacked( EIP191_PREFIX_FOR_EIP712_STRUCTURED_DATA, _domainSeparator(), dataHash ) ); } } // File contracts/nICE.sol //License-Identifier: MIT // Staking in sSpell inspired by Chef Nomi's SushiBar - MIT license (originally WTFPL) // modified by BoringCrypto for DictatorDAO contract nICE is IERC20, Domain { using BoringMath for uint256; using BoringMath128 for uint128; using BoringERC20 for IERC20; string public constant symbol = "nICE"; string public constant name = "Staked Ice Tokens"; uint8 public constant decimals = 18; uint256 public override totalSupply; uint256 private constant LOCK_TIME = 24 hours; IERC20 public immutable token; constructor(IERC20 _token) public { token = _token; } struct User { uint128 balance; uint128 lockedUntil; } /// @notice owner > balance mapping. mapping(address => User) public users; /// @notice owner > spender > allowance mapping. mapping(address => mapping(address => uint256)) public override allowance; /// @notice owner > nonce mapping. Used in `permit`. mapping(address => uint256) public nonces; event Transfer(address indexed _from, address indexed _to, uint256 _value); event Approval(address indexed _owner, address indexed _spender, uint256 _value); function balanceOf(address user) public view override returns (uint256 balance) { return users[user].balance; } function _transfer( address from, address to, uint256 shares ) internal { User memory fromUser = users[from]; require(block.timestamp >= fromUser.lockedUntil, "Locked"); if (shares != 0) { require(fromUser.balance >= shares, "Low balance"); if (from != to) { require(to != address(0), "Zero address"); // Moved down so other failed calls safe some gas User memory toUser = users[to]; users[from].balance = fromUser.balance - shares.to128(); // Underflow is checked users[to].balance = toUser.balance + shares.to128(); // Can't overflow because totalSupply would be greater than 2^128-1; } } emit Transfer(from, to, shares); } function _useAllowance(address from, uint256 shares) internal { if (msg.sender == from) { return; } uint256 spenderAllowance = allowance[from][msg.sender]; // If allowance is infinite, don't decrease it to save on gas (breaks with EIP-20). if (spenderAllowance != type(uint256).max) { require(spenderAllowance >= shares, "Low allowance"); allowance[from][msg.sender] = spenderAllowance - shares; // Underflow is checked } } /// @notice Transfers `shares` tokens from `msg.sender` to `to`. /// @param to The address to move the tokens. /// @param shares of the tokens to move. /// @return (bool) Returns True if succeeded. function transfer(address to, uint256 shares) public returns (bool) { _transfer(msg.sender, to, shares); return true; } /// @notice Transfers `shares` tokens from `from` to `to`. Caller needs approval for `from`. /// @param from Address to draw tokens from. /// @param to The address to move the tokens. /// @param shares The token shares to move. /// @return (bool) Returns True if succeeded. function transferFrom( address from, address to, uint256 shares ) public returns (bool) { _useAllowance(from, shares); _transfer(from, to, shares); return true; } /// @notice Approves `amount` from sender to be spend by `spender`. /// @param spender Address of the party that can draw from msg.sender's account. /// @param amount The maximum collective amount that `spender` can draw. /// @return (bool) Returns True if approved. function approve(address spender, uint256 amount) public override returns (bool) { allowance[msg.sender][spender] = amount; emit Approval(msg.sender, spender, amount); return true; } // solhint-disable-next-line func-name-mixedcase function DOMAIN_SEPARATOR() external view returns (bytes32) { return _domainSeparator(); } // keccak256("Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)"); bytes32 private constant PERMIT_SIGNATURE_HASH = 0x6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9; /// @notice Approves `value` from `owner_` to be spend by `spender`. /// @param owner_ Address of the owner. /// @param spender The address of the spender that gets approved to draw from `owner_`. /// @param value The maximum collective amount that `spender` can draw. /// @param deadline This permit must be redeemed before this deadline (UTC timestamp in seconds). function permit( address owner_, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external override { require(owner_ != address(0), "Zero owner"); require(block.timestamp < deadline, "Expired"); require( ecrecover(_getDigest(keccak256(abi.encode(PERMIT_SIGNATURE_HASH, owner_, spender, value, nonces[owner_]++, deadline))), v, r, s) == owner_, "Invalid Sig" ); allowance[owner_][spender] = value; emit Approval(owner_, spender, value); } /// math is ok, because amount, totalSupply and shares is always 0 <= amount <= 69.000.000 * 10^18 /// theoretically you can grow the amount/share ratio, but it's not practical and useless function mint(uint256 amount) public returns (bool) { require(msg.sender != address(0), "Zero address"); User memory user = users[msg.sender]; uint256 totalTokens = token.balanceOf(address(this)); uint256 shares = totalSupply == 0 ? amount : (amount * totalSupply) / totalTokens; user.balance += shares.to128(); user.lockedUntil = (block.timestamp + LOCK_TIME).to128(); users[msg.sender] = user; totalSupply += shares; token.safeTransferFrom(msg.sender, address(this), amount); emit Transfer(address(0), msg.sender, shares); return true; } function _burn( address from, address to, uint256 shares ) internal { require(to != address(0), "Zero address"); User memory user = users[from]; require(block.timestamp >= user.lockedUntil, "Locked"); uint256 amount = (shares * token.balanceOf(address(this))) / totalSupply; users[from].balance = user.balance.sub(shares.to128()); // Must check underflow totalSupply -= shares; token.safeTransfer(to, amount); emit Transfer(from, address(0), shares); } function burn(address to, uint256 shares) public returns (bool) { _burn(msg.sender, to, shares); return true; } function burnFrom( address from, address to, uint256 shares ) public returns (bool) { _useAllowance(from, shares); _burn(from, to, shares); return true; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"contract IERC20","name":"_token","type":"address"}],"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":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","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":"user","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"burn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"burnFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner_","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"users","outputs":[{"internalType":"uint128","name":"balance","type":"uint128"},{"internalType":"uint128","name":"lockedUntil","type":"uint128"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60e06040523480156200001157600080fd5b5060405162001cd638038062001cd68339810160408190526200003491620000b5565b4660a081905262000045816200005f565b6080525060601b6001600160601b03191660c05262000104565b60007f47e79534a245952e8b16893a336b85a3d9ea9fa8c573f3d803afb92a7946921882306040516020016200009893929190620000e5565b604051602081830303815290604052805190602001209050919050565b600060208284031215620000c7578081fd5b81516001600160a01b0381168114620000de578182fd5b9392505050565b92835260208301919091526001600160a01b0316604082015260600190565b60805160a05160c05160601c611b8e62000148600039806104c45280610638528061095f5280610f33528061105e525080610da4525080610dd95250611b8e6000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c806395d89b41116100b2578063a9059cbb11610081578063dd62ed3e11610066578063dd62ed3e14610240578063ec60bcf314610253578063fc0c546a146102665761011b565b8063a9059cbb14610218578063d505accf1461022b5761011b565b806395d89b41146101c95780639dc29fac146101d1578063a0712d68146101e4578063a87430ba146101f75761011b565b8063313ce567116100ee578063313ce567146101865780633644e5151461019b57806370a08231146101a35780637ecebe00146101b65761011b565b806306fdde0314610120578063095ea7b31461013e57806318160ddd1461015e57806323b872dd14610173575b600080fd5b61012861027b565b6040516101359190611826565b60405180910390f35b61015161014c366004611652565b6102b4565b6040516101359190611787565b61016661032c565b6040516101359190611792565b61015161018136600461159f565b610332565b61018e610353565b6040516101359190611af5565b610166610358565b6101666101b1366004611549565b610367565b6101666101c4366004611549565b6103a1565b6101286103b3565b6101516101df366004611652565b6103ec565b6101516101f236600461169c565b610402565b61020a610205366004611549565b6106bd565b604051610135929190611ad2565b610151610226366004611652565b6106f9565b61023e6102393660046115df565b610706565b005b61016661024e36600461156b565b610929565b61015161026136600461159f565b610946565b61026e61095d565b604051610135919061170f565b6040518060400160405280601181526020017f5374616b65642049636520546f6b656e7300000000000000000000000000000081525081565b33600081815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061031a908690611792565b60405180910390a35060015b92915050565b60005481565b600061033e8483610981565b610349848484610a72565b5060019392505050565b601281565b6000610362610d9f565b905090565b73ffffffffffffffffffffffffffffffffffffffff166000908152600160205260409020546fffffffffffffffffffffffffffffffff1690565b60036020526000908152604090205481565b6040518060400160405280600481526020017f6e4943450000000000000000000000000000000000000000000000000000000081525081565b60006103f9338484610dff565b50600192915050565b600033610444576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043b9061198a565b60405180910390fd5b61044c61150e565b503360009081526001602090815260408083208151808301835290546fffffffffffffffffffffffffffffffff80821683527001000000000000000000000000000000009091041692810192909252517f70a082310000000000000000000000000000000000000000000000000000000081529091907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a082319061050e90309060040161170f565b60206040518083038186803b15801561052657600080fd5b505afa15801561053a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061055e91906116b4565b90506000805460001461057e578160005486028161057857fe5b04610580565b845b905061058b816110f2565b8351016fffffffffffffffffffffffffffffffff1683526105b06201518042016110f2565b6fffffffffffffffffffffffffffffffff90811660208086019182523360008181526001909252604082208751815494518616700100000000000000000000000000000000029086167fffffffffffffffffffffffffffffffff00000000000000000000000000000000909516949094179094169290921790925581548301909155610675907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16903088611142565b60405133906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906106aa908590611792565b60405180910390a3506001949350505050565b6001602052600090815260409020546fffffffffffffffffffffffffffffffff8082169170010000000000000000000000000000000090041682565b60006103f9338484610a72565b73ffffffffffffffffffffffffffffffffffffffff8716610753576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043b90611a64565b83421061078c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043b90611a9b565b73ffffffffffffffffffffffffffffffffffffffff87166000818152600360209081526040918290208054600181810190925592519092610817926107fc927f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9928e928e928e92918e910161179b565b604051602081830303815290604052805190602001206112ad565b858585604051600081526020016040526040516108379493929190611808565b6020604051602081039080840390855afa158015610859573d6000803e3d6000fd5b5050506020604051035173ffffffffffffffffffffffffffffffffffffffff16146108b0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043b906119f8565b73ffffffffffffffffffffffffffffffffffffffff8088166000818152600260209081526040808320948b168084529490915290819020889055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610918908990611792565b60405180910390a350505050505050565b600260209081526000928352604080842090915290825290205481565b60006109528483610981565b610349848484610dff565b7f000000000000000000000000000000000000000000000000000000000000000081565b3373ffffffffffffffffffffffffffffffffffffffff831614156109a457610a6e565b73ffffffffffffffffffffffffffffffffffffffff821660009081526002602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610a6c5781811015610a36576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043b9061191c565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600260209081526040808320338452909152902082820390555b505b5050565b610a7a61150e565b5073ffffffffffffffffffffffffffffffffffffffff83166000908152600160209081526040918290208251808401909352546fffffffffffffffffffffffffffffffff808216845270010000000000000000000000000000000090910416908201819052421015610b18576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043b906118ae565b8115610d345780516fffffffffffffffffffffffffffffffff16821115610b6b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043b90611953565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614610d345773ffffffffffffffffffffffffffffffffffffffff8316610beb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043b9061198a565b610bf361150e565b5073ffffffffffffffffffffffffffffffffffffffff83166000908152600160209081526040918290208251808401909352546fffffffffffffffffffffffffffffffff80821684527001000000000000000000000000000000009091041690820152610c5f836110f2565b825173ffffffffffffffffffffffffffffffffffffffff8716600090815260016020526040902080547fffffffffffffffffffffffffffffffff0000000000000000000000000000000016929091036fffffffffffffffffffffffffffffffff16919091179055610ccf836110f2565b905173ffffffffffffffffffffffffffffffffffffffff8516600090815260016020526040902080547fffffffffffffffffffffffffffffffff0000000000000000000000000000000016919092016fffffffffffffffffffffffffffffffff161790555b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610d919190611792565b60405180910390a350505050565b6000467f00000000000000000000000000000000000000000000000000000000000000008114610dd757610dd28161131d565b610df9565b7f00000000000000000000000000000000000000000000000000000000000000005b91505090565b73ffffffffffffffffffffffffffffffffffffffff8216610e4c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043b9061198a565b610e5461150e565b5073ffffffffffffffffffffffffffffffffffffffff83166000908152600160209081526040918290208251808401909352546fffffffffffffffffffffffffffffffff808216845270010000000000000000000000000000000090910416908201819052421015610ef2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043b906118ae565b600080546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906370a0823190610f6890309060040161170f565b60206040518083038186803b158015610f8057600080fd5b505afa158015610f94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb891906116b4565b840281610fc157fe5b049050610fea610fd0846110f2565b83516fffffffffffffffffffffffffffffffff1690611354565b73ffffffffffffffffffffffffffffffffffffffff868116600090815260016020526040812080547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff94909416939093179092558154859003909155611085907f00000000000000000000000000000000000000000000000000000000000000001685836113a6565b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516110e39190611792565b60405180910390a35050505050565b60006fffffffffffffffffffffffffffffffff82111561113e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043b906119c1565b5090565b600060608573ffffffffffffffffffffffffffffffffffffffff166323b872dd60e01b86868660405160240161117a93929190611730565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090941693909317909252905161120391906116cc565b6000604051808303816000865af19150503d8060008114611240576040519150601f19603f3d011682016040523d82523d6000602084013e611245565b606091505b509150915081801561126f57508051158061126f57508080602001905181019061126f919061167c565b6112a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043b90611a2f565b505050505050565b60006040518060400160405280600281526020017f19010000000000000000000000000000000000000000000000000000000000008152506112ed610d9f565b83604051602001611300939291906116e8565b604051602081830303815290604052805190602001209050919050565b60007f47e79534a245952e8b16893a336b85a3d9ea9fa8c573f3d803afb92a794692188230604051602001611300939291906117dc565b8082036fffffffffffffffffffffffffffffffff8084169082161115610326576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043b90611877565b600060608473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b85856040516024016113dc929190611761565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090941693909317909252905161146591906116cc565b6000604051808303816000865af19150503d80600081146114a2576040519150601f19603f3d011682016040523d82523d6000602084013e6114a7565b606091505b50915091508180156114d15750805115806114d15750808060200190518101906114d1919061167c565b611507576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043b906118e5565b5050505050565b604080518082019091526000808252602082015290565b803573ffffffffffffffffffffffffffffffffffffffff8116811461032657600080fd5b60006020828403121561155a578081fd5b6115648383611525565b9392505050565b6000806040838503121561157d578081fd5b6115878484611525565b91506115968460208501611525565b90509250929050565b6000806000606084860312156115b3578081fd5b83356115be81611b33565b925060208401356115ce81611b33565b929592945050506040919091013590565b600080600080600080600060e0888a0312156115f9578283fd5b6116038989611525565b96506116128960208a01611525565b95506040880135945060608801359350608088013560ff81168114611635578384fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215611664578182fd5b61166e8484611525565b946020939093013593505050565b60006020828403121561168d578081fd5b81518015158114611564578182fd5b6000602082840312156116ad578081fd5b5035919050565b6000602082840312156116c5578081fd5b5051919050565b600082516116de818460208701611b03565b9190910192915050565b600084516116fa818460208901611b03565b91909101928352506020820152604001919050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b901515815260200190565b90815260200190565b95865273ffffffffffffffffffffffffffffffffffffffff94851660208701529290931660408501526060840152608083019190915260a082015260c00190565b928352602083019190915273ffffffffffffffffffffffffffffffffffffffff16604082015260600190565b93845260ff9290921660208401526040830152606082015260800190565b6000602082528251806020840152611845816040850160208701611b03565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60208082526015908201527f426f72696e674d6174683a20556e646572666c6f770000000000000000000000604082015260600190565b60208082526006908201527f4c6f636b65640000000000000000000000000000000000000000000000000000604082015260600190565b6020808252601c908201527f426f72696e6745524332303a205472616e73666572206661696c656400000000604082015260600190565b6020808252600d908201527f4c6f7720616c6c6f77616e636500000000000000000000000000000000000000604082015260600190565b6020808252600b908201527f4c6f772062616c616e6365000000000000000000000000000000000000000000604082015260600190565b6020808252600c908201527f5a65726f20616464726573730000000000000000000000000000000000000000604082015260600190565b6020808252601c908201527f426f72696e674d6174683a2075696e74313238204f766572666c6f7700000000604082015260600190565b6020808252600b908201527f496e76616c696420536967000000000000000000000000000000000000000000604082015260600190565b6020808252818101527f426f72696e6745524332303a205472616e7366657246726f6d206661696c6564604082015260600190565b6020808252600a908201527f5a65726f206f776e657200000000000000000000000000000000000000000000604082015260600190565b60208082526007908201527f4578706972656400000000000000000000000000000000000000000000000000604082015260600190565b6fffffffffffffffffffffffffffffffff92831681529116602082015260400190565b60ff91909116815260200190565b60005b83811015611b1e578181015183820152602001611b06565b83811115611b2d576000848401525b50505050565b73ffffffffffffffffffffffffffffffffffffffff81168114611b5557600080fd5b5056fea2646970667358221220a78789a0d025ef289ef4f73086adce9b69de5eb1dd57ccdd76fe4b2f75227e6964736f6c634300060c0033000000000000000000000000f16e81dce15b08f326220742020379b855b87df9
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061011b5760003560e01c806395d89b41116100b2578063a9059cbb11610081578063dd62ed3e11610066578063dd62ed3e14610240578063ec60bcf314610253578063fc0c546a146102665761011b565b8063a9059cbb14610218578063d505accf1461022b5761011b565b806395d89b41146101c95780639dc29fac146101d1578063a0712d68146101e4578063a87430ba146101f75761011b565b8063313ce567116100ee578063313ce567146101865780633644e5151461019b57806370a08231146101a35780637ecebe00146101b65761011b565b806306fdde0314610120578063095ea7b31461013e57806318160ddd1461015e57806323b872dd14610173575b600080fd5b61012861027b565b6040516101359190611826565b60405180910390f35b61015161014c366004611652565b6102b4565b6040516101359190611787565b61016661032c565b6040516101359190611792565b61015161018136600461159f565b610332565b61018e610353565b6040516101359190611af5565b610166610358565b6101666101b1366004611549565b610367565b6101666101c4366004611549565b6103a1565b6101286103b3565b6101516101df366004611652565b6103ec565b6101516101f236600461169c565b610402565b61020a610205366004611549565b6106bd565b604051610135929190611ad2565b610151610226366004611652565b6106f9565b61023e6102393660046115df565b610706565b005b61016661024e36600461156b565b610929565b61015161026136600461159f565b610946565b61026e61095d565b604051610135919061170f565b6040518060400160405280601181526020017f5374616b65642049636520546f6b656e7300000000000000000000000000000081525081565b33600081815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061031a908690611792565b60405180910390a35060015b92915050565b60005481565b600061033e8483610981565b610349848484610a72565b5060019392505050565b601281565b6000610362610d9f565b905090565b73ffffffffffffffffffffffffffffffffffffffff166000908152600160205260409020546fffffffffffffffffffffffffffffffff1690565b60036020526000908152604090205481565b6040518060400160405280600481526020017f6e4943450000000000000000000000000000000000000000000000000000000081525081565b60006103f9338484610dff565b50600192915050565b600033610444576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043b9061198a565b60405180910390fd5b61044c61150e565b503360009081526001602090815260408083208151808301835290546fffffffffffffffffffffffffffffffff80821683527001000000000000000000000000000000009091041692810192909252517f70a082310000000000000000000000000000000000000000000000000000000081529091907f000000000000000000000000f16e81dce15b08f326220742020379b855b87df973ffffffffffffffffffffffffffffffffffffffff16906370a082319061050e90309060040161170f565b60206040518083038186803b15801561052657600080fd5b505afa15801561053a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061055e91906116b4565b90506000805460001461057e578160005486028161057857fe5b04610580565b845b905061058b816110f2565b8351016fffffffffffffffffffffffffffffffff1683526105b06201518042016110f2565b6fffffffffffffffffffffffffffffffff90811660208086019182523360008181526001909252604082208751815494518616700100000000000000000000000000000000029086167fffffffffffffffffffffffffffffffff00000000000000000000000000000000909516949094179094169290921790925581548301909155610675907f000000000000000000000000f16e81dce15b08f326220742020379b855b87df973ffffffffffffffffffffffffffffffffffffffff16903088611142565b60405133906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906106aa908590611792565b60405180910390a3506001949350505050565b6001602052600090815260409020546fffffffffffffffffffffffffffffffff8082169170010000000000000000000000000000000090041682565b60006103f9338484610a72565b73ffffffffffffffffffffffffffffffffffffffff8716610753576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043b90611a64565b83421061078c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043b90611a9b565b73ffffffffffffffffffffffffffffffffffffffff87166000818152600360209081526040918290208054600181810190925592519092610817926107fc927f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9928e928e928e92918e910161179b565b604051602081830303815290604052805190602001206112ad565b858585604051600081526020016040526040516108379493929190611808565b6020604051602081039080840390855afa158015610859573d6000803e3d6000fd5b5050506020604051035173ffffffffffffffffffffffffffffffffffffffff16146108b0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043b906119f8565b73ffffffffffffffffffffffffffffffffffffffff8088166000818152600260209081526040808320948b168084529490915290819020889055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610918908990611792565b60405180910390a350505050505050565b600260209081526000928352604080842090915290825290205481565b60006109528483610981565b610349848484610dff565b7f000000000000000000000000f16e81dce15b08f326220742020379b855b87df981565b3373ffffffffffffffffffffffffffffffffffffffff831614156109a457610a6e565b73ffffffffffffffffffffffffffffffffffffffff821660009081526002602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610a6c5781811015610a36576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043b9061191c565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600260209081526040808320338452909152902082820390555b505b5050565b610a7a61150e565b5073ffffffffffffffffffffffffffffffffffffffff83166000908152600160209081526040918290208251808401909352546fffffffffffffffffffffffffffffffff808216845270010000000000000000000000000000000090910416908201819052421015610b18576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043b906118ae565b8115610d345780516fffffffffffffffffffffffffffffffff16821115610b6b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043b90611953565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614610d345773ffffffffffffffffffffffffffffffffffffffff8316610beb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043b9061198a565b610bf361150e565b5073ffffffffffffffffffffffffffffffffffffffff83166000908152600160209081526040918290208251808401909352546fffffffffffffffffffffffffffffffff80821684527001000000000000000000000000000000009091041690820152610c5f836110f2565b825173ffffffffffffffffffffffffffffffffffffffff8716600090815260016020526040902080547fffffffffffffffffffffffffffffffff0000000000000000000000000000000016929091036fffffffffffffffffffffffffffffffff16919091179055610ccf836110f2565b905173ffffffffffffffffffffffffffffffffffffffff8516600090815260016020526040902080547fffffffffffffffffffffffffffffffff0000000000000000000000000000000016919092016fffffffffffffffffffffffffffffffff161790555b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610d919190611792565b60405180910390a350505050565b6000467f00000000000000000000000000000000000000000000000000000000000000018114610dd757610dd28161131d565b610df9565b7f6c9174ad4775db30f767de9ead00781064c187f06289ecee49778a8895c2b49e5b91505090565b73ffffffffffffffffffffffffffffffffffffffff8216610e4c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043b9061198a565b610e5461150e565b5073ffffffffffffffffffffffffffffffffffffffff83166000908152600160209081526040918290208251808401909352546fffffffffffffffffffffffffffffffff808216845270010000000000000000000000000000000090910416908201819052421015610ef2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043b906118ae565b600080546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000f16e81dce15b08f326220742020379b855b87df916906370a0823190610f6890309060040161170f565b60206040518083038186803b158015610f8057600080fd5b505afa158015610f94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb891906116b4565b840281610fc157fe5b049050610fea610fd0846110f2565b83516fffffffffffffffffffffffffffffffff1690611354565b73ffffffffffffffffffffffffffffffffffffffff868116600090815260016020526040812080547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff94909416939093179092558154859003909155611085907f000000000000000000000000f16e81dce15b08f326220742020379b855b87df91685836113a6565b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516110e39190611792565b60405180910390a35050505050565b60006fffffffffffffffffffffffffffffffff82111561113e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043b906119c1565b5090565b600060608573ffffffffffffffffffffffffffffffffffffffff166323b872dd60e01b86868660405160240161117a93929190611730565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090941693909317909252905161120391906116cc565b6000604051808303816000865af19150503d8060008114611240576040519150601f19603f3d011682016040523d82523d6000602084013e611245565b606091505b509150915081801561126f57508051158061126f57508080602001905181019061126f919061167c565b6112a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043b90611a2f565b505050505050565b60006040518060400160405280600281526020017f19010000000000000000000000000000000000000000000000000000000000008152506112ed610d9f565b83604051602001611300939291906116e8565b604051602081830303815290604052805190602001209050919050565b60007f47e79534a245952e8b16893a336b85a3d9ea9fa8c573f3d803afb92a794692188230604051602001611300939291906117dc565b8082036fffffffffffffffffffffffffffffffff8084169082161115610326576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043b90611877565b600060608473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b85856040516024016113dc929190611761565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090941693909317909252905161146591906116cc565b6000604051808303816000865af19150503d80600081146114a2576040519150601f19603f3d011682016040523d82523d6000602084013e6114a7565b606091505b50915091508180156114d15750805115806114d15750808060200190518101906114d1919061167c565b611507576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043b906118e5565b5050505050565b604080518082019091526000808252602082015290565b803573ffffffffffffffffffffffffffffffffffffffff8116811461032657600080fd5b60006020828403121561155a578081fd5b6115648383611525565b9392505050565b6000806040838503121561157d578081fd5b6115878484611525565b91506115968460208501611525565b90509250929050565b6000806000606084860312156115b3578081fd5b83356115be81611b33565b925060208401356115ce81611b33565b929592945050506040919091013590565b600080600080600080600060e0888a0312156115f9578283fd5b6116038989611525565b96506116128960208a01611525565b95506040880135945060608801359350608088013560ff81168114611635578384fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215611664578182fd5b61166e8484611525565b946020939093013593505050565b60006020828403121561168d578081fd5b81518015158114611564578182fd5b6000602082840312156116ad578081fd5b5035919050565b6000602082840312156116c5578081fd5b5051919050565b600082516116de818460208701611b03565b9190910192915050565b600084516116fa818460208901611b03565b91909101928352506020820152604001919050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b901515815260200190565b90815260200190565b95865273ffffffffffffffffffffffffffffffffffffffff94851660208701529290931660408501526060840152608083019190915260a082015260c00190565b928352602083019190915273ffffffffffffffffffffffffffffffffffffffff16604082015260600190565b93845260ff9290921660208401526040830152606082015260800190565b6000602082528251806020840152611845816040850160208701611b03565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60208082526015908201527f426f72696e674d6174683a20556e646572666c6f770000000000000000000000604082015260600190565b60208082526006908201527f4c6f636b65640000000000000000000000000000000000000000000000000000604082015260600190565b6020808252601c908201527f426f72696e6745524332303a205472616e73666572206661696c656400000000604082015260600190565b6020808252600d908201527f4c6f7720616c6c6f77616e636500000000000000000000000000000000000000604082015260600190565b6020808252600b908201527f4c6f772062616c616e6365000000000000000000000000000000000000000000604082015260600190565b6020808252600c908201527f5a65726f20616464726573730000000000000000000000000000000000000000604082015260600190565b6020808252601c908201527f426f72696e674d6174683a2075696e74313238204f766572666c6f7700000000604082015260600190565b6020808252600b908201527f496e76616c696420536967000000000000000000000000000000000000000000604082015260600190565b6020808252818101527f426f72696e6745524332303a205472616e7366657246726f6d206661696c6564604082015260600190565b6020808252600a908201527f5a65726f206f776e657200000000000000000000000000000000000000000000604082015260600190565b60208082526007908201527f4578706972656400000000000000000000000000000000000000000000000000604082015260600190565b6fffffffffffffffffffffffffffffffff92831681529116602082015260400190565b60ff91909116815260200190565b60005b83811015611b1e578181015183820152602001611b06565b83811115611b2d576000848401525b50505050565b73ffffffffffffffffffffffffffffffffffffffff81168114611b5557600080fd5b5056fea2646970667358221220a78789a0d025ef289ef4f73086adce9b69de5eb1dd57ccdd76fe4b2f75227e6964736f6c634300060c0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000f16e81dce15b08f326220742020379b855b87df9
-----Decoded View---------------
Arg [0] : _token (address): 0xf16e81dce15B08F326220742020379B855B87DF9
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000f16e81dce15b08f326220742020379b855b87df9
Deployed Bytecode Sourcemap
9675:7204:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9869:49;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13430:214;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;9967:35::-;;;:::i;:::-;;;;;;;:::i;12909:226::-;;;;;;:::i;:::-;;:::i;9925:35::-;;;:::i;:::-;;;;;;;:::i;13706:104::-;;;:::i;10758:125::-;;;;;;:::i;:::-;;:::i;10538:41::-;;;;;;:::i;:::-;;:::i;9824:38::-;;;:::i;16516:134::-;;;;;;:::i;:::-;;:::i;15286:649::-;;;;;;:::i;:::-;;:::i;10302:37::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;12460:142::-;;;;;;:::i;:::-;;:::i;14439:640::-;;;;;;:::i;:::-;;:::i;:::-;;10400:73;;;;;;:::i;:::-;;:::i;16658:218::-;;;;;;:::i;:::-;;:::i;10063:29::-;;;:::i;:::-;;;;;;;:::i;9869:49::-;;;;;;;;;;;;;;;;;;;:::o;13430:214::-;13532:10;13505:4;13522:21;;;:9;:21;;;;;;;;;:30;;;;;;;;;;:39;;;13577:37;13505:4;;13522:30;;13577:37;;;;13555:6;;13577:37;:::i;:::-;;;;;;;;-1:-1:-1;13632:4:0;13430:214;;;;;:::o;9967:35::-;;;;:::o;12909:226::-;13023:4;13040:27;13054:4;13060:6;13040:13;:27::i;:::-;13078;13088:4;13094:2;13098:6;13078:9;:27::i;:::-;-1:-1:-1;13123:4:0;12909:226;;;;;:::o;9925:35::-;9958:2;9925:35;:::o;13706:104::-;13757:7;13784:18;:16;:18::i;:::-;13777:25;;13706:104;:::o;10758:125::-;10856:11;;10821:15;10856:11;;;:5;:11;;;;;:19;;;;10758:125::o;10538:41::-;;;;;;;;;;;;;:::o;9824:38::-;;;;;;;;;;;;;;;;;;;:::o;16516:134::-;16574:4;16591:29;16597:10;16609:2;16613:6;16591:5;:29::i;:::-;-1:-1:-1;16638:4:0;16516:134;;;;:::o;15286:649::-;15332:4;15357:10;15349:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;15409:16;;:::i;:::-;-1:-1:-1;15434:10:0;15428:17;;;;:5;:17;;;;;;;;15409:36;;;;;;;;;;;;;;;;;;;;;;;;;;;15480:30;;;;15409:36;;15428:17;15480:5;15428:17;15480:15;;;;:30;;15504:4;;15480:30;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15458:52;;15521:14;15538:11;;15553:1;15538:16;:64;;15591:11;15576;;15567:6;:20;15566:36;;;;;;15538:64;;;15557:6;15538:64;15521:81;;15629:14;:6;:12;:14::i;:::-;15613:30;;;;;;;15673:37;10046:8;15674:15;:27;15673:35;:37::i;:::-;15654:56;;;;:16;;;;:56;;;15727:10;15721:17;;;;:5;:17;;;;;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15756:21;;;;;;;15790:57;;:5;15721:17;15790:22;;15833:4;15840:6;15790:22;:57::i;:::-;15865:40;;15886:10;;15882:1;;15865:40;;;;15898:6;;15865:40;:::i;:::-;;;;;;;;-1:-1:-1;15923:4:0;;15286:649;-1:-1:-1;;;;15286:649:0:o;10302:37::-;;;;;;;;;;;;;;;;;;;;;;:::o;12460:142::-;12522:4;12539:33;12549:10;12561:2;12565:6;12539:9;:33::i;14439:640::-;14659:20;;;14651:43;;;;;;;;;;;;:::i;:::-;14731:8;14713:15;:26;14705:46;;;;;;;;;;;;:::i;:::-;14784:155;;;14826:21;14873:14;;;:6;:14;;;;;;;;;:16;;14784:128;14873:16;;;;;;14815:85;;14784:128;;14794:108;;14815:85;;13972:66;;14933:6;;14857:7;;14866:5;;14873:16;14891:8;;14815:85;;:::i;:::-;;;;;;;;;;;;;14805:96;;;;;;14794:10;:108::i;:::-;14904:1;14907;14910;14784:128;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:155;;;14762:216;;;;;;;;;;;;:::i;:::-;14989:17;;;;;;;;:9;:17;;;;;;;;:26;;;;;;;;;;;;;;:34;;;15039:32;;;;;15018:5;;15039:32;:::i;:::-;;;;;;;;14439:640;;;;;;;:::o;10400:73::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;16658:218::-;16768:4;16785:27;16799:4;16805:6;16785:13;:27::i;:::-;16823:23;16829:4;16835:2;16839:6;16823:5;:23::i;10063:29::-;;;:::o;11713:521::-;11790:10;:18;;;;11786:57;;;11825:7;;11786:57;11880:15;;;11853:24;11880:15;;;:9;:15;;;;;;;;11896:10;11880:27;;;;;;;;12035:17;12015:37;;12011:216;;12097:6;12077:16;:26;;12069:52;;;;;;;;;;;;:::i;:::-;12136:15;;;;;;;:9;:15;;;;;;;;12152:10;12136:27;;;;;;;12166:25;;;12136:55;;12011:216;11713:521;;;;:::o;10891:814::-;11006:20;;:::i;:::-;-1:-1:-1;11029:11:0;;;;;;;:5;:11;;;;;;;;;11006:34;;;;;;;;;;;;;;;;;;;;;;;;;;11059:15;:39;;11051:58;;;;;;;;;;;;:::i;:::-;11124:11;;11120:536;;11160:16;;:26;;;-1:-1:-1;11160:26:0;11152:50;;;;;;;;;;;;:::i;:::-;11229:2;11221:10;;:4;:10;;;11217:428;;11260:16;;;11252:41;;;;;;;;;;;;:::i;:::-;11362:18;;:::i;:::-;-1:-1:-1;11383:9:0;;;;;;;:5;:9;;;;;;;;;11362:30;;;;;;;;;;;;;;;;;;;;;;;;11452:14;:6;:12;:14::i;:::-;11433:16;;11411:11;;;11433:16;11411:11;;;:5;:11;;;;;:55;;;;11433:33;;;;11411:55;;;;;;;;11546:14;:6;:12;:14::i;:::-;11529;;11509:9;;;11529:14;11509:9;;;:5;:9;;;;;:51;;;;11529:31;;;;11509:51;;;;;11217:428;11686:2;11671:26;;11680:4;11671:26;;;11690:6;11671:26;;;;;;:::i;:::-;;;;;;;;10891:814;;;;:::o;8900:237::-;8951:7;9009:9;9047:25;9036:36;;:93;;9095:34;9121:7;9095:25;:34::i;:::-;9036:93;;;9075:17;9036:93;9029:100;;;8900:237;:::o;15943:565::-;16062:16;;;16054:41;;;;;;;;;;;;:::i;:::-;16106:16;;:::i;:::-;-1:-1:-1;16125:11:0;;;;;;;:5;:11;;;;;;;;;16106:30;;;;;;;;;;;;;;;;;;;;;;;;;;16155:15;:35;;16147:54;;;;;;;;;;;;:::i;:::-;16212:14;16273:11;;16239:30;;;;;:15;:5;:15;;;;:30;;16263:4;;16239:30;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16230:6;:39;16229:55;;;;;;16212:72;;16317:32;16334:14;:6;:12;:14::i;:::-;16317:12;;:16;;;;:32::i;:::-;16295:11;;;;;;;;:5;:11;;;;;:54;;;;;;;;;;;;;;;;16384:21;;;;;;;;16418:30;;:5;:18;16437:2;16441:6;16418:18;:30::i;:::-;16489:1;16466:34;;16475:4;16466:34;;;16493:6;16466:34;;;;;;:::i;:::-;;;;;;;;15943:565;;;;;:::o;845:161::-;894:9;924:16;;;;916:57;;;;;;;;;;;;:::i;:::-;-1:-1:-1;996:1:0;845:161::o;6891:382::-;7037:12;7051:17;7080:5;7072:19;;3936:10;7115:17;;7134:4;7140:2;7144:6;7092:59;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7072:80;;;;7092:59;7072:80;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7036:116;;;;7171:7;:57;;;;-1:-1:-1;7183:11:0;;:16;;:44;;;7214:4;7203:24;;;;;;;;;;;;:::i;:::-;7163:102;;;;;;;;;;;;:::i;:::-;6891:382;;;;;;:::o;9145:331::-;9206:14;9322:40;;;;;;;;;;;;;;;;;9385:18;:16;:18::i;:::-;9426:8;9283:170;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;9255:213;;;;;;9233:235;;9145:331;;;:::o;8128:277::-;8202:7;7714:68;8332:7;8366:4;8253:133;;;;;;;;;;:::i;1619:138::-;1712:5;;;1707:16;;;;;;;;;1699:50;;;;;;;;;;;;:::i;6228:340::-;6347:12;6361:17;6390:5;6382:19;;3846:10;6425:12;;6439:2;6443:6;6402:48;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6382:69;;;;6402:48;6382:69;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6346:105;;;;6470:7;:57;;;;-1:-1:-1;6482:11:0;;:16;;:44;;;6513:4;6502:24;;;;;;;;;;;;:::i;:::-;6462:98;;;;;;;;;;;;:::i;:::-;6228:340;;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;:::o;5:130::-;72:20;;21094:42;21083:54;;22123:35;;22113:2;;22172:1;;22162:12;825:241;;929:2;917:9;908:7;904:23;900:32;897:2;;;-1:-1;;935:12;897:2;997:53;1042:7;1018:22;997:53;:::i;:::-;987:63;891:175;-1:-1;;;891:175::o;1073:366::-;;;1194:2;1182:9;1173:7;1169:23;1165:32;1162:2;;;-1:-1;;1200:12;1162:2;1262:53;1307:7;1283:22;1262:53;:::i;:::-;1252:63;;1370:53;1415:7;1352:2;1395:9;1391:22;1370:53;:::i;:::-;1360:63;;1156:283;;;;;:::o;1446:491::-;;;;1584:2;1572:9;1563:7;1559:23;1555:32;1552:2;;;-1:-1;;1590:12;1552:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;1642:63;-1:-1;1742:2;1781:22;;72:20;97:33;72:20;97:33;:::i;:::-;1546:391;;1750:63;;-1:-1;;;1850:2;1889:22;;;;481:20;;1546:391::o;1944:991::-;;;;;;;;2148:3;2136:9;2127:7;2123:23;2119:33;2116:2;;;-1:-1;;2155:12;2116:2;2217:53;2262:7;2238:22;2217:53;:::i;:::-;2207:63;;2325:53;2370:7;2307:2;2350:9;2346:22;2325:53;:::i;:::-;2315:63;;2415:2;2458:9;2454:22;481:20;2423:63;;2523:2;2566:9;2562:22;481:20;2531:63;;2631:3;2673:9;2669:22;757:20;21299:4;22637:5;21288:16;22614:5;22611:33;22601:2;;-1:-1;;22648:12;22601:2;2110:825;;;;-1:-1;2110:825;;;;2640:61;2738:3;2778:22;;344:20;;-1:-1;2847:3;2887:22;;;344:20;;2110:825;-1:-1;;2110:825::o;2942:366::-;;;3063:2;3051:9;3042:7;3038:23;3034:32;3031:2;;;-1:-1;;3069:12;3031:2;3131:53;3176:7;3152:22;3131:53;:::i;:::-;3121:63;3221:2;3260:22;;;;481:20;;-1:-1;;;3025:283::o;3315:257::-;;3427:2;3415:9;3406:7;3402:23;3398:32;3395:2;;;-1:-1;;3433:12;3395:2;223:6;217:13;22269:5;20796:13;20789:21;22247:5;22244:32;22234:2;;-1:-1;;22280:12;3579:241;;3683:2;3671:9;3662:7;3658:23;3654:32;3651:2;;;-1:-1;;3689:12;3651:2;-1:-1;481:20;;3645:175;-1:-1;3645:175::o;3827:263::-;;3942:2;3930:9;3921:7;3917:23;3913:32;3910:2;;;-1:-1;;3948:12;3910:2;-1:-1;629:13;;3904:186;-1:-1;3904:186::o;9782:271::-;;4767:5;19983:12;4878:52;4923:6;4918:3;4911:4;4904:5;4900:16;4878:52;:::i;:::-;4942:16;;;;;9916:137;-1:-1;;9916:137::o;10060:553::-;;4767:5;19983:12;4878:52;4923:6;4918:3;4911:4;4904:5;4900:16;4878:52;:::i;:::-;4942:16;;;;4399:37;;;-1:-1;4911:4;10465:12;;4399:37;10576:12;;;10252:361;-1:-1;10252:361::o;10620:222::-;21094:42;21083:54;;;;4168:37;;10747:2;10732:18;;10718:124::o;10849:444::-;21094:42;21083:54;;;4168:37;;21083:54;;;;11196:2;11181:18;;4168:37;11279:2;11264:18;;4399:37;;;;11032:2;11017:18;;11003:290::o;11300:333::-;21094:42;21083:54;;;;4168:37;;11619:2;11604:18;;4399:37;11455:2;11440:18;;11426:207::o;11640:210::-;20796:13;;20789:21;4282:34;;11761:2;11746:18;;11732:118::o;11857:222::-;4399:37;;;11984:2;11969:18;;11955:124::o;12086:780::-;4399:37;;;21094:42;21083:54;;;12518:2;12503:18;;4168:37;21083:54;;;;12601:2;12586:18;;4168:37;12684:2;12669:18;;4399:37;12767:3;12752:19;;4399:37;;;;12851:3;12836:19;;4399:37;12353:3;12338:19;;12324:542::o;12873:444::-;4399:37;;;13220:2;13205:18;;4399:37;;;;21094:42;21083:54;13303:2;13288:18;;4168:37;13056:2;13041:18;;13027:290::o;13324:548::-;4399:37;;;21299:4;21288:16;;;;13692:2;13677:18;;9735:35;13775:2;13760:18;;4399:37;13858:2;13843:18;;4399:37;13531:3;13516:19;;13502:370::o;14136:310::-;;14283:2;14304:17;14297:47;5276:5;19983:12;20422:6;14283:2;14272:9;14268:18;20410:19;5370:52;5415:6;20450:14;14272:9;20450:14;14283:2;5396:5;5392:16;5370:52;:::i;:::-;22047:2;22027:14;22043:7;22023:28;5434:39;;;;20450:14;5434:39;;14254:192;-1:-1;;14254:192::o;14453:416::-;14653:2;14667:47;;;6077:2;14638:18;;;20410:19;6113:23;20450:14;;;6093:44;6156:12;;;14624:245::o;14876:416::-;15076:2;15090:47;;;6407:1;15061:18;;;20410:19;6442:8;20450:14;;;6422:29;6470:12;;;15047:245::o;15299:416::-;15499:2;15513:47;;;6721:2;15484:18;;;20410:19;6757:30;20450:14;;;6737:51;6807:12;;;15470:245::o;15722:416::-;15922:2;15936:47;;;7058:2;15907:18;;;20410:19;7094:15;20450:14;;;7074:36;7129:12;;;15893:245::o;16145:416::-;16345:2;16359:47;;;7380:2;16330:18;;;20410:19;7416:13;20450:14;;;7396:34;7449:12;;;16316:245::o;16568:416::-;16768:2;16782:47;;;7700:2;16753:18;;;20410:19;7736:14;20450;;;7716:35;7770:12;;;16739:245::o;16991:416::-;17191:2;17205:47;;;8021:2;17176:18;;;20410:19;8057:30;20450:14;;;8037:51;8107:12;;;17162:245::o;17414:416::-;17614:2;17628:47;;;8358:2;17599:18;;;20410:19;8394:13;20450:14;;;8374:34;8427:12;;;17585:245::o;17837:416::-;18037:2;18051:47;;;18022:18;;;20410:19;8714:34;20450:14;;;8694:55;8768:12;;;18008:245::o;18260:416::-;18460:2;18474:47;;;9019:2;18445:18;;;20410:19;9055:12;20450:14;;;9035:33;9087:12;;;18431:245::o;18683:416::-;18883:2;18897:47;;;9338:1;18868:18;;;20410:19;9373:9;20450:14;;;9353:30;9402:12;;;18854:245::o;19106:333::-;20974:34;20963:46;;;9499:37;;20963:46;;19425:2;19410:18;;9499:37;19261:2;19246:18;;19232:207::o;19675:214::-;21299:4;21288:16;;;;9735:35;;19798:2;19783:18;;19769:120::o;21602:268::-;21667:1;21674:101;21688:6;21685:1;21682:13;21674:101;;;21755:11;;;21749:18;21736:11;;;21729:39;21710:2;21703:10;21674:101;;;21790:6;21787:1;21784:13;21781:2;;;21667:1;21846:6;21841:3;21837:16;21830:27;21781:2;;21651:219;;;:::o;22064:117::-;21094:42;22151:5;21083:54;22126:5;22123:35;22113:2;;22172:1;;22162:12;22113:2;22107:74;:::o
Swarm Source
ipfs://a78789a0d025ef289ef4f73086adce9b69de5eb1dd57ccdd76fe4b2f75227e69
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.