Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 15 from a total of 15 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Suspend | 19479508 | 269 days ago | IN | 0 ETH | 0.00161797 | ||||
Deauthorize Addr... | 19477294 | 270 days ago | IN | 0 ETH | 0.00145133 | ||||
Authorize Addres... | 11835106 | 1403 days ago | IN | 0 ETH | 0.00813763 | ||||
Deauthorize Addr... | 11835101 | 1403 days ago | IN | 0 ETH | 0.00237384 | ||||
Authorize Addres... | 11835050 | 1403 days ago | IN | 0 ETH | 0.009164 | ||||
Transfer | 10316227 | 1637 days ago | IN | 0 ETH | 0.001155 | ||||
Authorize Addres... | 10243384 | 1648 days ago | IN | 0 ETH | 0.00256592 | ||||
Authorize Addres... | 10054352 | 1677 days ago | IN | 0 ETH | 0.00087974 | ||||
Authorize Addres... | 9137575 | 1821 days ago | IN | 0 ETH | 0.00095305 | ||||
Authorize Addres... | 9134396 | 1822 days ago | IN | 0 ETH | 0.00095305 | ||||
Authorize Addres... | 9124613 | 1824 days ago | IN | 0 ETH | 0.00095305 | ||||
Authorize Addres... | 9124594 | 1824 days ago | IN | 0 ETH | 0.00095305 | ||||
Authorize Addres... | 9124356 | 1824 days ago | IN | 0 ETH | 0.00080643 | ||||
Add Trusted Subm... | 9124320 | 1824 days ago | IN | 0 ETH | 0.00047998 | ||||
Authorize Addres... | 9063514 | 1835 days ago | IN | 0 ETH | 0.00095216 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
TradeDelegate
Compiler Version
v0.5.7+commit.6da8b019
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2019-12-07 */ // File: contracts/loopring/impl/BrokerData.sol pragma solidity 0.5.7; library BrokerData { struct BrokerOrder { address owner; bytes32 orderHash; uint fillAmountB; uint requestedAmountS; uint requestedFeeAmount; address tokenRecipient; bytes extraData; } struct BrokerApprovalRequest { BrokerOrder[] orders; address tokenS; address tokenB; address feeToken; uint totalFillAmountB; uint totalRequestedAmountS; uint totalRequestedFeeAmount; } struct BrokerInterceptorReport { address owner; address broker; bytes32 orderHash; address tokenB; address tokenS; address feeToken; uint fillAmountB; uint spentAmountS; uint spentFeeAmount; address tokenRecipient; bytes extraData; } } // File: contracts/loopring/iface/IBrokerDelegate.sol /* Copyright 2017 Loopring Project Ltd (Loopring Foundation). Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ pragma solidity 0.5.7; pragma experimental ABIEncoderV2; /** * @title IBrokerDelegate * @author Zack Rubenstein */ interface IBrokerDelegate { /* * Loopring requests an allowance be set on a given token for a specified amount. Order details * are provided (tokenS, totalAmountS, tokenB, totalAmountB, orderTokenRecipient, extraOrderData) * to aid in any calculations or on-chain exchange of assets that may be required. The last 4 * parameters concern the actual token approval being requested of the broker. * * @returns Whether or not onOrderFillReport should be called for orders using this broker */ function brokerRequestAllowance(BrokerData.BrokerApprovalRequest calldata request) external returns (bool); /* * After Loopring performs all of the transfers necessary to complete all the submitted * rings it will call this function for every order's brokerInterceptor (if set) passing * along the final fill counts for tokenB, tokenS and feeToken. This allows actions to be * performed on a per-order basis after all tokenS/feeToken funds have left the order owner's * possesion and the tokenB funds have been transfered to the order owner's intended recipient */ function onOrderFillReport(BrokerData.BrokerInterceptorReport calldata fillReport) external; /* * Get the available token balance controlled by the broker on behalf of an address (owner) */ function brokerBalanceOf(address owner, address token) external view returns (uint); } // File: contracts/loopring/iface/ITradeDelegate.sol /* Copyright 2017 Loopring Project Ltd (Loopring Foundation). Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ pragma solidity 0.5.7; /// @title ITradeDelegate /// @dev Acts as a middle man to transfer ERC20 tokens on behalf of different /// versions of Loopring protocol to avoid ERC20 re-authorization. /// @author Daniel Wang - <[email protected]>. contract ITradeDelegate { function isTrustedSubmitter(address submitter) public view returns (bool); function batchTransfer( bytes32[] calldata batch ) external; function brokerTransfer( address token, address broker, address recipient, uint amount ) external; function proxyBrokerRequestAllowance( BrokerData.BrokerApprovalRequest memory request, address broker ) public returns (bool); /// @dev Add a Loopring protocol address. /// @param addr A loopring protocol address. function authorizeAddress( address addr ) external; /// @dev Remove a Loopring protocol address. /// @param addr A loopring protocol address. function deauthorizeAddress( address addr ) external; function isAddressAuthorized( address addr ) public view returns (bool); function suspend() external; function resume() external; function kill() external; } // File: contracts/loopring/iface/Errors.sol /* Copyright 2017 Loopring Project Ltd (Loopring Foundation). Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ pragma solidity 0.5.7; /// @title Errors contract Errors { string constant ZERO_VALUE = "ZERO_VALUE"; string constant ZERO_ADDRESS = "ZERO_ADDRESS"; string constant INVALID_VALUE = "INVALID_VALUE"; string constant INVALID_ADDRESS = "INVALID_ADDRESS"; string constant INVALID_SIZE = "INVALID_SIZE"; string constant INVALID_MINER_SIGNATURE = "INVALID_MINER_SIGNATURE"; string constant INVALID_STATE = "INVALID_STATE"; string constant NOT_FOUND = "NOT_FOUND"; string constant ALREADY_EXIST = "ALREADY_EXIST"; string constant REENTRY = "REENTRY"; string constant UNAUTHORIZED = "UNAUTHORIZED"; string constant UNIMPLEMENTED = "UNIMPLEMENTED"; string constant UNSUPPORTED = "UNSUPPORTED"; string constant TRANSFER_FAILURE = "TRANSFER_FAILURE"; string constant BROKER_TRANSFER_FAILURE = "BROKER_TRANSFER_FAILURE"; string constant WITHDRAWAL_FAILURE = "WITHDRAWAL_FAILURE"; string constant BURN_FAILURE = "BURN_FAILURE"; string constant BURN_RATE_FROZEN = "BURN_RATE_FROZEN"; string constant BURN_RATE_MINIMIZED = "BURN_RATE_MINIMIZED"; string constant UNAUTHORIZED_ONCHAIN_ORDER = "UNAUTHORIZED_ONCHAIN_ORDER"; string constant INVALID_CANDIDATE = "INVALID_CANDIDATE"; string constant ALREADY_VOTED = "ALREADY_VOTED"; string constant NOT_OWNER = "NOT_OWNER"; } // File: contracts/loopring/lib/Ownable.sol /* Copyright 2017 Loopring Project Ltd (Loopring Foundation). Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ pragma solidity 0.5.7; /// @title Ownable /// @dev The Ownable contract has an owner address, and provides basic /// authorization control functions, this simplifies the implementation of /// "user permissions". contract Ownable { address public owner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); /// @dev The Ownable constructor sets the original `owner` of the contract /// to the sender. constructor() public { owner = msg.sender; } /// @dev Throws if called by any account other than the owner. modifier onlyOwner() { require(msg.sender == owner, "NOT_OWNER"); _; } /// @dev Allows the current owner to transfer control of the contract to a /// newOwner. /// @param newOwner The address to transfer ownership to. function transferOwnership( address newOwner ) public onlyOwner { require(newOwner != address(0x0), "ZERO_ADDRESS"); emit OwnershipTransferred(owner, newOwner); owner = newOwner; } } // File: contracts/loopring/lib/Claimable.sol /* Copyright 2017 Loopring Project Ltd (Loopring Foundation). Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ pragma solidity 0.5.7; /// @title Claimable /// @dev Extension for the Ownable contract, where the ownership needs /// to be claimed. This allows the new owner to accept the transfer. contract Claimable is Ownable { address public pendingOwner; /// @dev Modifier throws if called by any account other than the pendingOwner. modifier onlyPendingOwner() { require(msg.sender == pendingOwner, "UNAUTHORIZED"); _; } /// @dev Allows the current owner to set the pendingOwner address. /// @param newOwner The address to transfer ownership to. function transferOwnership( address newOwner ) public onlyOwner { require(newOwner != address(0x0) && newOwner != owner, "INVALID_ADDRESS"); pendingOwner = newOwner; } /// @dev Allows the pendingOwner address to finalize the transfer. function claimOwnership() public onlyPendingOwner { emit OwnershipTransferred(owner, pendingOwner); owner = pendingOwner; pendingOwner = address(0x0); } } // File: contracts/loopring/lib/Authorizable.sol /* Copyright 2017 Loopring Project Ltd (Loopring Foundation). Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ pragma solidity 0.5.7; /// @title Authorizable /// @dev The Authorizable contract allows a contract to be used by other contracts /// by authorizing it by the contract owner. contract Authorizable is Claimable, Errors { event AddressAuthorized( address indexed addr ); event AddressDeauthorized( address indexed addr ); // The list of all authorized addresses address[] authorizedAddresses; mapping (address => uint) private positionMap; struct AuthorizedAddress { uint pos; address addr; } modifier onlyAuthorized() { require(positionMap[msg.sender] > 0, UNAUTHORIZED); _; } function authorizeAddress( address addr ) external onlyOwner { require(address(0x0) != addr, ZERO_ADDRESS); require(0 == positionMap[addr], ALREADY_EXIST); require(isContract(addr), INVALID_ADDRESS); authorizedAddresses.push(addr); positionMap[addr] = authorizedAddresses.length; emit AddressAuthorized(addr); } function deauthorizeAddress( address addr ) external onlyOwner { require(address(0x0) != addr, ZERO_ADDRESS); uint pos = positionMap[addr]; require(pos != 0, NOT_FOUND); uint size = authorizedAddresses.length; if (pos != size) { address lastOne = authorizedAddresses[size - 1]; authorizedAddresses[pos - 1] = lastOne; positionMap[lastOne] = pos; } authorizedAddresses.length -= 1; delete positionMap[addr]; emit AddressDeauthorized(addr); } function isAddressAuthorized( address addr ) public view returns (bool) { return positionMap[addr] > 0; } function isContract( address addr ) internal view returns (bool) { uint size; assembly { size := extcodesize(addr) } return size > 0; } } // File: contracts/loopring/lib/ERC20SafeTransfer.sol /* Copyright 2017 Loopring Project Ltd (Loopring Foundation). Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ pragma solidity 0.5.7; /// @title ERC20 safe transfer /// @dev see https://github.com/sec-bit/badERC20Fix /// @author Brecht Devos - <[email protected]> library ERC20SafeTransfer { function safeTransfer( address token, address to, uint256 value) internal returns (bool success) { // A transfer is successful when 'call' is successful and depending on the token: // - No value is returned: we assume a revert when the transfer failed (i.e. 'call' returns false) // - A single boolean is returned: this boolean needs to be true (non-zero) // bytes4(keccak256("transfer(address,uint256)")) = 0xa9059cbb bytes memory callData = abi.encodeWithSelector( bytes4(0xa9059cbb), to, value ); (success, ) = token.call(callData); return checkReturnValue(success); } function safeTransferFrom( address token, address from, address to, uint256 value) internal returns (bool success) { // A transferFrom is successful when 'call' is successful and depending on the token: // - No value is returned: we assume a revert when the transfer failed (i.e. 'call' returns false) // - A single boolean is returned: this boolean needs to be true (non-zero) // bytes4(keccak256("transferFrom(address,address,uint256)")) = 0x23b872dd bytes memory callData = abi.encodeWithSelector( bytes4(0x23b872dd), from, to, value ); (success, ) = token.call(callData); return checkReturnValue(success); } function checkReturnValue( bool success ) internal pure returns (bool) { // A transfer/transferFrom is successful when 'call' is successful and depending on the token: // - No value is returned: we assume a revert when the transfer failed (i.e. 'call' returns false) // - A single boolean is returned: this boolean needs to be true (non-zero) if (success) { assembly { switch returndatasize() // Non-standard ERC20: nothing is returned so if 'call' was successful we assume the transfer succeeded case 0 { success := 1 } // Standard ERC20: a single boolean value is returned which needs to be true case 32 { returndatacopy(0, 0, 32) success := mload(0) } // None of the above: not successful default { success := 0 } } } return success; } } // File: contracts/loopring/lib/Killable.sol /* Copyright 2017 Loopring Project Ltd (Loopring Foundation). Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ pragma solidity 0.5.7; /// @title Killable /// @dev The Killable contract allows the contract owner to suspend, resume or kill the contract contract Killable is Claimable, Errors { bool public suspended = false; modifier notSuspended() { require(!suspended, INVALID_STATE); _; } modifier isSuspended() { require(suspended, INVALID_STATE); _; } function suspend() external onlyOwner notSuspended { suspended = true; } function resume() external onlyOwner isSuspended { suspended = false; } /// owner must suspend the delegate first before invoking the kill method. function kill() external onlyOwner isSuspended { owner = address(0x0); emit OwnershipTransferred(owner, address(0x0)); } } // File: contracts/loopring/lib/NoDefaultFunc.sol /* Copyright 2017 Loopring Project Ltd (Loopring Foundation). Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ pragma solidity 0.5.7; /// @title NoDefaultFunc /// @dev Disable default functions. contract NoDefaultFunc is Errors { function () external payable { revert(UNSUPPORTED); } } // File: contracts/loopring/impl/TradeDelegate.sol /* Copyright 2017 Loopring Project Ltd (Loopring Foundation). Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ pragma solidity 0.5.7; /// @title An Implementation of ITradeDelegate. /// @author Daniel Wang - <[email protected]>. /// @author Kongliang Zhong - <[email protected]>. contract TradeDelegate is ITradeDelegate, Authorizable, Killable, NoDefaultFunc { using ERC20SafeTransfer for address; mapping (address => bool) public trustedSubmitters; function addTrustedSubmitter(address submitter) public { require(owner == msg.sender, "UNAUTHORIZED"); trustedSubmitters[submitter] = true; } function removeTrustedSubmitter(address submitter) public { require(owner == msg.sender, "UNAUTHORIZED"); trustedSubmitters[submitter] = false; } function isTrustedSubmitter(address submitter) public view returns (bool) { return trustedSubmitters[submitter]; } function brokerTransfer( address token, address broker, address recipient, uint amount ) external onlyAuthorized notSuspended { require( token.safeTransferFrom(broker, recipient, amount), BROKER_TRANSFER_FAILURE ); } function proxyBrokerRequestAllowance( BrokerData.BrokerApprovalRequest memory request, address broker ) onlyAuthorized notSuspended public returns (bool) { return IBrokerDelegate(broker).brokerRequestAllowance(request); } function batchTransfer( bytes32[] calldata batch ) external onlyAuthorized notSuspended { uint length = batch.length; require(length % 4 == 0, INVALID_SIZE); uint start = 68; uint end = start + length * 32; for (uint p = start; p < end; p += 128) { address token; address from; address to; uint amount; assembly { token := calldataload(add(p, 0)) from := calldataload(add(p, 32)) to := calldataload(add(p, 64)) amount := calldataload(add(p, 96)) } require( token.safeTransferFrom(from, to, amount), TRANSFER_FAILURE ); } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":false,"inputs":[],"name":"resume","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"trustedSubmitters","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"submitter","type":"address"}],"name":"isTrustedSubmitter","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"submitter","type":"address"}],"name":"addTrustedSubmitter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"kill","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"}],"name":"authorizeAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"claimOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"},{"name":"broker","type":"address"},{"name":"recipient","type":"address"},{"name":"amount","type":"uint256"}],"name":"brokerTransfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"suspended","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"components":[{"components":[{"name":"owner","type":"address"},{"name":"orderHash","type":"bytes32"},{"name":"fillAmountB","type":"uint256"},{"name":"requestedAmountS","type":"uint256"},{"name":"requestedFeeAmount","type":"uint256"},{"name":"tokenRecipient","type":"address"},{"name":"extraData","type":"bytes"}],"name":"orders","type":"tuple[]"},{"name":"tokenS","type":"address"},{"name":"tokenB","type":"address"},{"name":"feeToken","type":"address"},{"name":"totalFillAmountB","type":"uint256"},{"name":"totalRequestedAmountS","type":"uint256"},{"name":"totalRequestedFeeAmount","type":"uint256"}],"name":"request","type":"tuple"},{"name":"broker","type":"address"}],"name":"proxyBrokerRequestAllowance","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"addr","type":"address"}],"name":"isAddressAuthorized","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"pendingOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"suspend","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"}],"name":"deauthorizeAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"batch","type":"bytes32[]"}],"name":"batchTransfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"submitter","type":"address"}],"name":"removeTrustedSubmitter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"addr","type":"address"}],"name":"AddressAuthorized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"addr","type":"address"}],"name":"AddressDeauthorized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]
Contract Creation Code
60806040526004805460ff19169055600080546001600160a01b031916331790556118a08061002f6000396000f3fe6080604052600436106101095760003560e01c80638da5cb5b11610095578063e6400bbe11610064578063e6400bbe146102d4578063f2fde38b146102e9578063f73857cc14610309578063fa369e6614610329578063fd97c1a21461034957610109565b80638da5cb5b1461025d5780639282602a1461027f578063ced3fb9c1461029f578063e30c3978146102bf57610109565b806341c0e1b5116100dc57806341c0e1b5146101de5780634a5db3b5146101f35780634e71e0c8146102135780635bc3e21a14610228578063702efdf31461024857610109565b8063046f7da2146101515780630d7570e61461016857806331ac0d581461019e578063336754ef146101be575b604080518082018252600b8152600160aa1b6a155394d5541413d49511510260208201529051600160e51b62461bcd028152610148919060040161172a565b60405180910390fd5b34801561015d57600080fd5b50610166610369565b005b34801561017457600080fd5b506101886101833660046112fc565b6103f1565b604051610195919061171c565b60405180910390f35b3480156101aa57600080fd5b506101886101b93660046112fc565b610406565b3480156101ca57600080fd5b506101666101d93660046112fc565b610424565b3480156101ea57600080fd5b50610166610475565b3480156101ff57600080fd5b5061016661020e3660046112fc565b61052d565b34801561021f57600080fd5b506101666106fa565b34801561023457600080fd5b5061016661024336600461131a565b61078b565b34801561025457600080fd5b506101886108af565b34801561026957600080fd5b506102726108b8565b60405161019591906116e6565b34801561028b57600080fd5b5061018861029a3660046113db565b6108c7565b3480156102ab57600080fd5b506101886102ba3660046112fc565b6109fc565b3480156102cb57600080fd5b50610272610a19565b3480156102e057600080fd5b50610166610a28565b3480156102f557600080fd5b506101666103043660046112fc565b610ab4565b34801561031557600080fd5b506101666103243660046112fc565b610b48565b34801561033557600080fd5b5061016661034436600461137b565b610d07565b34801561035557600080fd5b506101666103643660046112fc565b610ebb565b6000546001600160a01b0316331461039657604051600160e51b62461bcd0281526004016101489061175b565b60045460408051808201909152600d8152600160981b6c494e56414c49445f53544154450260208201529060ff166103e457604051600160e51b62461bcd028152600401610148919061172a565b506004805460ff19169055565b60056020526000908152604090205460ff1681565b6001600160a01b031660009081526005602052604090205460ff1690565b6000546001600160a01b0316331461045157604051600160e51b62461bcd0281526004016101489061174b565b6001600160a01b03166000908152600560205260409020805460ff19166001179055565b6000546001600160a01b031633146104a257604051600160e51b62461bcd0281526004016101489061175b565b60045460408051808201909152600d8152600160981b6c494e56414c49445f53544154450260208201529060ff166104f057604051600160e51b62461bcd028152600401610148919061172a565b50600080546001600160a01b031916815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6000546001600160a01b0316331461055a57604051600160e51b62461bcd0281526004016101489061175b565b60408051808201909152600c8152600160a01b6b5a45524f5f414444524553530260208201526001600160a01b0382166105aa57604051600160e51b62461bcd028152600401610148919061172a565b506001600160a01b038116600090815260036020908152604091829020548251808401909352600d83527f414c52454144595f455849535400000000000000000000000000000000000000918301919091521561061d57604051600160e51b62461bcd028152600401610148919061172a565b5061062781610f09565b6040518060400160405280600f8152602001600160881b6e494e56414c49445f41444452455353028152509061067357604051600160e51b62461bcd028152600401610148919061172a565b50600280546001810182557f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0180546001600160a01b0319166001600160a01b03841690811790915590546000828152600360205260408082209290925590517faa4a1856deca699ff17682b11b9090fe141669ccd7c1951ab8605ad8c9ab17759190a250565b6001546001600160a01b0316331461072757604051600160e51b62461bcd0281526004016101489061174b565b600154600080546040516001600160a01b0393841693909116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a360018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b33600090815260036020908152604091829020548251808401909352600c8352600160a21b6b15539055551213d49256915102918301919091526107e557604051600160e51b62461bcd028152600401610148919061172a565b5060045460408051808201909152600d8152600160981b6c494e56414c49445f53544154450260208201529060ff161561083557604051600160e51b62461bcd028152600401610148919061172a565b506108516001600160a01b03851684848463ffffffff610f0f16565b6040518060400160405280601781526020017f42524f4b45525f5452414e534645525f4641494c555245000000000000000000815250906108a857604051600160e51b62461bcd028152600401610148919061172a565b5050505050565b60045460ff1681565b6000546001600160a01b031681565b336000908152600360209081526040808320548151808301909252600c8252600160a21b6b15539055551213d49256915102928201929092529061092157604051600160e51b62461bcd028152600401610148919061172a565b5060045460408051808201909152600d8152600160981b6c494e56414c49445f53544154450260208201529060ff161561097157604051600160e51b62461bcd028152600401610148919061172a565b50604051600160e11b636616f84b0281526001600160a01b0383169063cc2df096906109a190869060040161176b565b602060405180830381600087803b1580156109bb57600080fd5b505af11580156109cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506109f391908101906113bd565b90505b92915050565b6001600160a01b0316600090815260036020526040902054151590565b6001546001600160a01b031681565b6000546001600160a01b03163314610a5557604051600160e51b62461bcd0281526004016101489061175b565b60045460408051808201909152600d8152600160981b6c494e56414c49445f53544154450260208201529060ff1615610aa457604051600160e51b62461bcd028152600401610148919061172a565b506004805460ff19166001179055565b6000546001600160a01b03163314610ae157604051600160e51b62461bcd0281526004016101489061175b565b6001600160a01b03811615801590610b0757506000546001600160a01b03828116911614155b610b2657604051600160e51b62461bcd0281526004016101489061173b565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610b7557604051600160e51b62461bcd0281526004016101489061175b565b60408051808201909152600c8152600160a01b6b5a45524f5f414444524553530260208201526001600160a01b038216610bc557604051600160e51b62461bcd028152600401610148919061172a565b506001600160a01b03811660009081526003602090815260409182902054825180840190935260098352600160ba1b681393d517d193d5539102918301919091529081610c2857604051600160e51b62461bcd028152600401610148919061172a565b50600254818114610cad57600060026001830381548110610c4557fe5b600091825260209091200154600280546001600160a01b03909216925082916000198601908110610c7257fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559290911681526003909152604090208290555b600280546000190190610cc09082611015565b506001600160a01b038316600081815260036020526040808220829055517fff697c8ffb6d1c8456e82cc41dade65a5222e9914aa8c020f55b73b617ad50c09190a2505050565b33600090815260036020908152604091829020548251808401909352600c8352600160a21b6b15539055551213d4925691510291830191909152610d6157604051600160e51b62461bcd028152600401610148919061172a565b5060045460408051808201909152600d8152600160981b6c494e56414c49445f53544154450260208201529060ff1615610db157604051600160e51b62461bcd028152600401610148919061172a565b5060408051808201909152600c81527f494e56414c49445f53495a450000000000000000000000000000000000000000602082015281906003821615610e0d57604051600160e51b62461bcd028152600401610148919061172a565b506044602082028101815b81811015610eb3578035602082013560408301356060840135610e4c6001600160a01b03851684848463ffffffff610f0f16565b6040518060400160405280601081526020017f5452414e534645525f4641494c5552450000000000000000000000000000000081525090610ea357604051600160e51b62461bcd028152600401610148919061172a565b5050505050608081019050610e18565b505050505050565b6000546001600160a01b03163314610ee857604051600160e51b62461bcd0281526004016101489061174b565b6001600160a01b03166000908152600560205260409020805460ff19169055565b3b151590565b600060606323b872dd60e01b858585604051602401610f30939291906116f4565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b0383818316178352505050509050856001600160a01b031681604051610f7d91906116d3565b6000604051808303816000865af19150503d8060008114610fba576040519150601f19603f3d011682016040523d82523d6000602084013e610fbf565b606091505b505080925050610fce82610fda565b9150505b949350505050565b60008115611011573d8015610ffa5760208114611003576000925061100f565b6001925061100f565b60206000803e60005192505b505b5090565b8154818355818111156110395760008381526020902061103991810190830161103e565b505050565b61105891905b808211156110115760008155600101611044565b90565b60006109f38235611804565b60008083601f84011261107957600080fd5b50813567ffffffffffffffff81111561109157600080fd5b6020830191508360208202830111156110a957600080fd5b9250929050565b600082601f8301126110c157600080fd5b81356110d46110cf826117a3565b61177c565b81815260209384019390925082018360005b8381101561111257813586016110fc8882611245565b84525060209283019291909101906001016110e6565b5050505092915050565b60006109f3825161180f565b60006109f38235611058565b600082601f83011261114557600080fd5b81356111536110cf826117c4565b9150808252602083016020830185838301111561116f57600080fd5b61117a838284611820565b50505092915050565b600060e0828403121561119557600080fd5b61119f60e061177c565b9050813567ffffffffffffffff8111156111b857600080fd5b6111c4848285016110b0565b82525060206111d58484830161105b565b60208301525060406111e98482850161105b565b60408301525060606111fd8482850161105b565b606083015250608061121184828501611128565b60808301525060a061122584828501611128565b60a08301525060c061123984828501611128565b60c08301525092915050565b600060e0828403121561125757600080fd5b61126160e061177c565b9050600061126f848461105b565b825250602061128084848301611128565b602083015250604061129484828501611128565b60408301525060606112a884828501611128565b60608301525060806112bc84828501611128565b60808301525060a06112d08482850161105b565b60a08301525060c082013567ffffffffffffffff8111156112f057600080fd5b61123984828501611134565b60006020828403121561130e57600080fd5b6000610fd2848461105b565b6000806000806080858703121561133057600080fd5b600061133c878761105b565b945050602061134d8782880161105b565b935050604061135e8782880161105b565b925050606061136f87828801611128565b91505092959194509250565b6000806020838503121561138e57600080fd5b823567ffffffffffffffff8111156113a557600080fd5b6113b185828601611067565b92509250509250929050565b6000602082840312156113cf57600080fd5b6000610fd2848461111c565b600080604083850312156113ee57600080fd5b823567ffffffffffffffff81111561140557600080fd5b61141185828601611183565b92505060206114228582860161105b565b9150509250929050565b60006109f3838361163f565b61144181611804565b82525050565b6000611452826117f2565b61145c81856117f6565b93508360208202850161146e856117ec565b60005b848110156114a557838303885261148983835161142c565b9250611494826117ec565b602098909801979150600101611471565b50909695505050505050565b6114418161180f565b61144181611058565b60006114ce826117f2565b6114d881856117ff565b93506114e881856020860161182c565b9290920192915050565b60006114fd826117f2565b61150781856117f6565b935061151781856020860161182c565b6115208161185c565b9093019392505050565b6000611537600f836117f6565b600160881b6e494e56414c49445f4144445245535302815260200192915050565b6000611565600c836117f6565b600160a21b6b15539055551213d49256915102815260200192915050565b60006115906009836117f6565b600160b91b682727aa2fa7aba722a902815260200192915050565b805160e0808452600091908401906115c38282611447565b91505060208301516115d86020860182611438565b5060408301516115eb6040860182611438565b5060608301516115fe6060860182611438565b50608083015161161160808601826114ba565b5060a083015161162460a08601826114ba565b5060c083015161163760c08601826114ba565b509392505050565b805160009060e08401906116538582611438565b50602083015161166660208601826114ba565b50604083015161167960408601826114ba565b50606083015161168c60608601826114ba565b50608083015161169f60808601826114ba565b5060a08301516116b260a0860182611438565b5060c083015184820360c08601526116ca82826114f2565b95945050505050565b60006116df82846114c3565b9392505050565b602081016109f68284611438565b606081016117028286611438565b61170f6020830185611438565b610fd260408301846114ba565b602081016109f682846114b1565b602080825281016109f381846114f2565b602080825281016109f68161152a565b602080825281016109f681611558565b602080825281016109f681611583565b602080825281016109f381846115ab565b60405181810167ffffffffffffffff8111828210171561179b57600080fd5b604052919050565b600067ffffffffffffffff8211156117ba57600080fd5b5060209081020190565b600067ffffffffffffffff8211156117db57600080fd5b506020601f91909101601f19160190565b60200190565b5190565b90815260200190565b919050565b60006109f682611814565b151590565b6001600160a01b031690565b82818337506000910152565b60005b8381101561184757818101518382015260200161182f565b83811115611856576000848401525b50505050565b601f01601f19169056fea265627a7a72305820d474bfae06d790b118359401063ec5d41e52778bdc8a19c499300203bd334e936c6578706572696d656e74616cf50037
Deployed Bytecode
0x6080604052600436106101095760003560e01c80638da5cb5b11610095578063e6400bbe11610064578063e6400bbe146102d4578063f2fde38b146102e9578063f73857cc14610309578063fa369e6614610329578063fd97c1a21461034957610109565b80638da5cb5b1461025d5780639282602a1461027f578063ced3fb9c1461029f578063e30c3978146102bf57610109565b806341c0e1b5116100dc57806341c0e1b5146101de5780634a5db3b5146101f35780634e71e0c8146102135780635bc3e21a14610228578063702efdf31461024857610109565b8063046f7da2146101515780630d7570e61461016857806331ac0d581461019e578063336754ef146101be575b604080518082018252600b8152600160aa1b6a155394d5541413d49511510260208201529051600160e51b62461bcd028152610148919060040161172a565b60405180910390fd5b34801561015d57600080fd5b50610166610369565b005b34801561017457600080fd5b506101886101833660046112fc565b6103f1565b604051610195919061171c565b60405180910390f35b3480156101aa57600080fd5b506101886101b93660046112fc565b610406565b3480156101ca57600080fd5b506101666101d93660046112fc565b610424565b3480156101ea57600080fd5b50610166610475565b3480156101ff57600080fd5b5061016661020e3660046112fc565b61052d565b34801561021f57600080fd5b506101666106fa565b34801561023457600080fd5b5061016661024336600461131a565b61078b565b34801561025457600080fd5b506101886108af565b34801561026957600080fd5b506102726108b8565b60405161019591906116e6565b34801561028b57600080fd5b5061018861029a3660046113db565b6108c7565b3480156102ab57600080fd5b506101886102ba3660046112fc565b6109fc565b3480156102cb57600080fd5b50610272610a19565b3480156102e057600080fd5b50610166610a28565b3480156102f557600080fd5b506101666103043660046112fc565b610ab4565b34801561031557600080fd5b506101666103243660046112fc565b610b48565b34801561033557600080fd5b5061016661034436600461137b565b610d07565b34801561035557600080fd5b506101666103643660046112fc565b610ebb565b6000546001600160a01b0316331461039657604051600160e51b62461bcd0281526004016101489061175b565b60045460408051808201909152600d8152600160981b6c494e56414c49445f53544154450260208201529060ff166103e457604051600160e51b62461bcd028152600401610148919061172a565b506004805460ff19169055565b60056020526000908152604090205460ff1681565b6001600160a01b031660009081526005602052604090205460ff1690565b6000546001600160a01b0316331461045157604051600160e51b62461bcd0281526004016101489061174b565b6001600160a01b03166000908152600560205260409020805460ff19166001179055565b6000546001600160a01b031633146104a257604051600160e51b62461bcd0281526004016101489061175b565b60045460408051808201909152600d8152600160981b6c494e56414c49445f53544154450260208201529060ff166104f057604051600160e51b62461bcd028152600401610148919061172a565b50600080546001600160a01b031916815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6000546001600160a01b0316331461055a57604051600160e51b62461bcd0281526004016101489061175b565b60408051808201909152600c8152600160a01b6b5a45524f5f414444524553530260208201526001600160a01b0382166105aa57604051600160e51b62461bcd028152600401610148919061172a565b506001600160a01b038116600090815260036020908152604091829020548251808401909352600d83527f414c52454144595f455849535400000000000000000000000000000000000000918301919091521561061d57604051600160e51b62461bcd028152600401610148919061172a565b5061062781610f09565b6040518060400160405280600f8152602001600160881b6e494e56414c49445f41444452455353028152509061067357604051600160e51b62461bcd028152600401610148919061172a565b50600280546001810182557f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0180546001600160a01b0319166001600160a01b03841690811790915590546000828152600360205260408082209290925590517faa4a1856deca699ff17682b11b9090fe141669ccd7c1951ab8605ad8c9ab17759190a250565b6001546001600160a01b0316331461072757604051600160e51b62461bcd0281526004016101489061174b565b600154600080546040516001600160a01b0393841693909116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a360018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b33600090815260036020908152604091829020548251808401909352600c8352600160a21b6b15539055551213d49256915102918301919091526107e557604051600160e51b62461bcd028152600401610148919061172a565b5060045460408051808201909152600d8152600160981b6c494e56414c49445f53544154450260208201529060ff161561083557604051600160e51b62461bcd028152600401610148919061172a565b506108516001600160a01b03851684848463ffffffff610f0f16565b6040518060400160405280601781526020017f42524f4b45525f5452414e534645525f4641494c555245000000000000000000815250906108a857604051600160e51b62461bcd028152600401610148919061172a565b5050505050565b60045460ff1681565b6000546001600160a01b031681565b336000908152600360209081526040808320548151808301909252600c8252600160a21b6b15539055551213d49256915102928201929092529061092157604051600160e51b62461bcd028152600401610148919061172a565b5060045460408051808201909152600d8152600160981b6c494e56414c49445f53544154450260208201529060ff161561097157604051600160e51b62461bcd028152600401610148919061172a565b50604051600160e11b636616f84b0281526001600160a01b0383169063cc2df096906109a190869060040161176b565b602060405180830381600087803b1580156109bb57600080fd5b505af11580156109cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506109f391908101906113bd565b90505b92915050565b6001600160a01b0316600090815260036020526040902054151590565b6001546001600160a01b031681565b6000546001600160a01b03163314610a5557604051600160e51b62461bcd0281526004016101489061175b565b60045460408051808201909152600d8152600160981b6c494e56414c49445f53544154450260208201529060ff1615610aa457604051600160e51b62461bcd028152600401610148919061172a565b506004805460ff19166001179055565b6000546001600160a01b03163314610ae157604051600160e51b62461bcd0281526004016101489061175b565b6001600160a01b03811615801590610b0757506000546001600160a01b03828116911614155b610b2657604051600160e51b62461bcd0281526004016101489061173b565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610b7557604051600160e51b62461bcd0281526004016101489061175b565b60408051808201909152600c8152600160a01b6b5a45524f5f414444524553530260208201526001600160a01b038216610bc557604051600160e51b62461bcd028152600401610148919061172a565b506001600160a01b03811660009081526003602090815260409182902054825180840190935260098352600160ba1b681393d517d193d5539102918301919091529081610c2857604051600160e51b62461bcd028152600401610148919061172a565b50600254818114610cad57600060026001830381548110610c4557fe5b600091825260209091200154600280546001600160a01b03909216925082916000198601908110610c7257fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559290911681526003909152604090208290555b600280546000190190610cc09082611015565b506001600160a01b038316600081815260036020526040808220829055517fff697c8ffb6d1c8456e82cc41dade65a5222e9914aa8c020f55b73b617ad50c09190a2505050565b33600090815260036020908152604091829020548251808401909352600c8352600160a21b6b15539055551213d4925691510291830191909152610d6157604051600160e51b62461bcd028152600401610148919061172a565b5060045460408051808201909152600d8152600160981b6c494e56414c49445f53544154450260208201529060ff1615610db157604051600160e51b62461bcd028152600401610148919061172a565b5060408051808201909152600c81527f494e56414c49445f53495a450000000000000000000000000000000000000000602082015281906003821615610e0d57604051600160e51b62461bcd028152600401610148919061172a565b506044602082028101815b81811015610eb3578035602082013560408301356060840135610e4c6001600160a01b03851684848463ffffffff610f0f16565b6040518060400160405280601081526020017f5452414e534645525f4641494c5552450000000000000000000000000000000081525090610ea357604051600160e51b62461bcd028152600401610148919061172a565b5050505050608081019050610e18565b505050505050565b6000546001600160a01b03163314610ee857604051600160e51b62461bcd0281526004016101489061174b565b6001600160a01b03166000908152600560205260409020805460ff19169055565b3b151590565b600060606323b872dd60e01b858585604051602401610f30939291906116f4565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b0383818316178352505050509050856001600160a01b031681604051610f7d91906116d3565b6000604051808303816000865af19150503d8060008114610fba576040519150601f19603f3d011682016040523d82523d6000602084013e610fbf565b606091505b505080925050610fce82610fda565b9150505b949350505050565b60008115611011573d8015610ffa5760208114611003576000925061100f565b6001925061100f565b60206000803e60005192505b505b5090565b8154818355818111156110395760008381526020902061103991810190830161103e565b505050565b61105891905b808211156110115760008155600101611044565b90565b60006109f38235611804565b60008083601f84011261107957600080fd5b50813567ffffffffffffffff81111561109157600080fd5b6020830191508360208202830111156110a957600080fd5b9250929050565b600082601f8301126110c157600080fd5b81356110d46110cf826117a3565b61177c565b81815260209384019390925082018360005b8381101561111257813586016110fc8882611245565b84525060209283019291909101906001016110e6565b5050505092915050565b60006109f3825161180f565b60006109f38235611058565b600082601f83011261114557600080fd5b81356111536110cf826117c4565b9150808252602083016020830185838301111561116f57600080fd5b61117a838284611820565b50505092915050565b600060e0828403121561119557600080fd5b61119f60e061177c565b9050813567ffffffffffffffff8111156111b857600080fd5b6111c4848285016110b0565b82525060206111d58484830161105b565b60208301525060406111e98482850161105b565b60408301525060606111fd8482850161105b565b606083015250608061121184828501611128565b60808301525060a061122584828501611128565b60a08301525060c061123984828501611128565b60c08301525092915050565b600060e0828403121561125757600080fd5b61126160e061177c565b9050600061126f848461105b565b825250602061128084848301611128565b602083015250604061129484828501611128565b60408301525060606112a884828501611128565b60608301525060806112bc84828501611128565b60808301525060a06112d08482850161105b565b60a08301525060c082013567ffffffffffffffff8111156112f057600080fd5b61123984828501611134565b60006020828403121561130e57600080fd5b6000610fd2848461105b565b6000806000806080858703121561133057600080fd5b600061133c878761105b565b945050602061134d8782880161105b565b935050604061135e8782880161105b565b925050606061136f87828801611128565b91505092959194509250565b6000806020838503121561138e57600080fd5b823567ffffffffffffffff8111156113a557600080fd5b6113b185828601611067565b92509250509250929050565b6000602082840312156113cf57600080fd5b6000610fd2848461111c565b600080604083850312156113ee57600080fd5b823567ffffffffffffffff81111561140557600080fd5b61141185828601611183565b92505060206114228582860161105b565b9150509250929050565b60006109f3838361163f565b61144181611804565b82525050565b6000611452826117f2565b61145c81856117f6565b93508360208202850161146e856117ec565b60005b848110156114a557838303885261148983835161142c565b9250611494826117ec565b602098909801979150600101611471565b50909695505050505050565b6114418161180f565b61144181611058565b60006114ce826117f2565b6114d881856117ff565b93506114e881856020860161182c565b9290920192915050565b60006114fd826117f2565b61150781856117f6565b935061151781856020860161182c565b6115208161185c565b9093019392505050565b6000611537600f836117f6565b600160881b6e494e56414c49445f4144445245535302815260200192915050565b6000611565600c836117f6565b600160a21b6b15539055551213d49256915102815260200192915050565b60006115906009836117f6565b600160b91b682727aa2fa7aba722a902815260200192915050565b805160e0808452600091908401906115c38282611447565b91505060208301516115d86020860182611438565b5060408301516115eb6040860182611438565b5060608301516115fe6060860182611438565b50608083015161161160808601826114ba565b5060a083015161162460a08601826114ba565b5060c083015161163760c08601826114ba565b509392505050565b805160009060e08401906116538582611438565b50602083015161166660208601826114ba565b50604083015161167960408601826114ba565b50606083015161168c60608601826114ba565b50608083015161169f60808601826114ba565b5060a08301516116b260a0860182611438565b5060c083015184820360c08601526116ca82826114f2565b95945050505050565b60006116df82846114c3565b9392505050565b602081016109f68284611438565b606081016117028286611438565b61170f6020830185611438565b610fd260408301846114ba565b602081016109f682846114b1565b602080825281016109f381846114f2565b602080825281016109f68161152a565b602080825281016109f681611558565b602080825281016109f681611583565b602080825281016109f381846115ab565b60405181810167ffffffffffffffff8111828210171561179b57600080fd5b604052919050565b600067ffffffffffffffff8211156117ba57600080fd5b5060209081020190565b600067ffffffffffffffff8211156117db57600080fd5b506020601f91909101601f19160190565b60200190565b5190565b90815260200190565b919050565b60006109f682611814565b151590565b6001600160a01b031690565b82818337506000910152565b60005b8381101561184757818101518382015260200161182f565b83811115611856576000848401525b50505050565b601f01601f19169056fea265627a7a72305820d474bfae06d790b118359401063ec5d41e52778bdc8a19c499300203bd334e936c6578706572696d656e74616cf50037
Deployed Bytecode Sourcemap
20933:2097:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20035:11;;;;;;;;;;;-1:-1:-1;;;;;20035:11:0;;;;20028:19;;-1:-1:-1;;;;;20028:19:0;;;;20035:11;20028:19;;;;;;;;;;;;18769:117;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18769:117:0;;;:::i;:::-;;21064:50;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;21064:50:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;21471:128;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;21471:128:0;;;;;;;;:::i;21123:164::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;21123:164:0;;;;;;;;:::i;18974:175::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18974:175:0;;;:::i;12516:413::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;12516:413:0;;;;;;;;:::i;10897:207::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10897:207:0;;;:::i;21607:306::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;21607:306:0;;;;;;;;:::i;18403:29::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18403:29:0;;;:::i;8369:20::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8369:20:0;;;:::i;:::-;;;;;;;;21921:258;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;21921:258:0;;;;;;;;:::i;13559:169::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;13559:169:0;;;;;;;;:::i;10213:27::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10213:27:0;;;:::i;18643:118::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18643:118:0;;;:::i;10586:231::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;10586:231:0;;;;;;;;:::i;12937:614::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;12937:614:0;;;;;;;;:::i;22187:840::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;22187:840:0;;;;;;;;:::i;21295:168::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;21295:168:0;;;;;;;;:::i;18769:117::-;8831:5;;-1:-1:-1;;;;;8831:5:0;8817:10;:19;8809:41;;;;-1:-1:-1;;;;;8809:41:0;;;;;;;;;18590:9;;18601:13;;;;;;;;;;;;-1:-1:-1;;;;;18601:13:0;;;;;18590:9;;18582:33;;;;-1:-1:-1;;;;;18582:33:0;;;;;;;;;;-1:-1:-1;18861:9:0;:17;;-1:-1:-1;;18861:17:0;;;18769:117::o;21064:50::-;;;;;;;;;;;;;;;:::o;21471:128::-;-1:-1:-1;;;;;21563:28:0;21539:4;21563:28;;;:17;:28;;;;;;;;;21471:128::o;21123:164::-;21197:5;;-1:-1:-1;;;;;21197:5:0;21206:10;21197:19;21189:44;;;;-1:-1:-1;;;;;21189:44:0;;;;;;;;;-1:-1:-1;;;;;21244:28:0;;;;;:17;:28;;;;;:35;;-1:-1:-1;;21244:35:0;21275:4;21244:35;;;21123:164::o;18974:175::-;8831:5;;-1:-1:-1;;;;;8831:5:0;8817:10;:19;8809:41;;;;-1:-1:-1;;;;;8809:41:0;;;;;;;;;18590:9;;18601:13;;;;;;;;;;;;-1:-1:-1;;;;;18601:13:0;;;;;18590:9;;18582:33;;;;-1:-1:-1;;;;;18582:33:0;;;;;;;;;;-1:-1:-1;19080:3:0;19064:20;;-1:-1:-1;;;;;;19064:20:0;;;19100:41;;19080:3;;19100:41;;19080:3;;19100:41;18974:175::o;12516:413::-;8831:5;;-1:-1:-1;;;;;8831:5:0;8817:10;:19;8809:41;;;;-1:-1:-1;;;;;8809:41:0;;;;;;;;;12659:12;;;;;;;;;;;;-1:-1:-1;;;;;12659:12:0;;;;-1:-1:-1;;;;;12637:20:0;;12629:43;;;;-1:-1:-1;;;;;12629:43:0;;;;;;;;;;-1:-1:-1;;;;;;12696:17:0;;;;;;:11;:17;;;;;;;;;;12715:13;;;;;;;;;;;;;;;;;;;12691:22;12683:46;;;;-1:-1:-1;;;;;12683:46:0;;;;;;;;;;;12748:16;12759:4;12748:10;:16::i;:::-;12766:15;;;;;;;;;;;;;-1:-1:-1;;;;;12766:15:0;;;12740:42;;;;;-1:-1:-1;;;;;12740:42:0;;;;;;;;;;-1:-1:-1;12795:19:0;27:10:-1;;39:1;23:18;;45:23;;12795:30:0;;;;-1:-1:-1;;;;;;12795:30:0;-1:-1:-1;;;;;12795:30:0;;;;;;;;12856:26;;-1:-1:-1;12836:17:0;;;:11;12795:30;12836:17;;;;;:46;;;;12898:23;;;;-1:-1:-1;12898:23:0;12516:413;:::o;10897:207::-;10394:12;;-1:-1:-1;;;;;10394:12:0;10380:10;:26;10372:51;;;;-1:-1:-1;;;;;10372:51:0;;;;;;;;;11014:12;;;11007:5;;10986:41;;-1:-1:-1;;;;;11014:12:0;;;;11007:5;;;;10986:41;;;11046:12;;;;11038:20;;-1:-1:-1;;;;;;11038:20:0;;;-1:-1:-1;;;;;11046:12:0;;11038:20;;;;11069:27;;;10897:207::o;21607:306::-;12458:10;12472:1;12446:23;;;:11;:23;;;;;;;;;;12475:12;;;;;;;;;;;-1:-1:-1;;;;;12475:12:0;;;;;;;12438:50;;;;-1:-1:-1;;;;;12438:50:0;;;;;;;;;;-1:-1:-1;18490:9:0;;18501:13;;;;;;;;;;;;-1:-1:-1;;;;;18501:13:0;;;;;18490:9;;18489:10;18481:34;;;;-1:-1:-1;;;;;18481:34:0;;;;;;;;;;-1:-1:-1;21807:49:0;-1:-1:-1;;;;;21807:22:0;;21830:6;21838:9;21849:6;21807:49;:22;:49;:::i;:::-;21871:23;;;;;;;;;;;;;;;;;21785:120;;;;;-1:-1:-1;;;;;21785:120:0;;;;;;;;;;;21607:306;;;;:::o;18403:29::-;;;;;;:::o;8369:20::-;;;-1:-1:-1;;;;;8369:20:0;;:::o;21921:258::-;12458:10;22092:4;12446:23;;;:11;:23;;;;;;;;;12475:12;;;;;;;;;;;-1:-1:-1;;;;;12475:12:0;;;;;;;;12438:50;;;;-1:-1:-1;;;;;12438:50:0;;;;;;;;;;-1:-1:-1;18490:9:0;;18501:13;;;;;;;;;;;;-1:-1:-1;;;;;18501:13:0;;;;;18490:9;;18489:10;18481:34;;;;-1:-1:-1;;;;;18481:34:0;;;;;;;;;;-1:-1:-1;22116:55:0;;-1:-1:-1;;;;;22116:55:0;;-1:-1:-1;;;;;22116:46:0;;;;;:55;;22163:7;;22116:55;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22116:55:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22116:55:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;22116:55:0;;;;;;;;;22109:62;;18526:1;21921:258;;;;:::o;13559:169::-;-1:-1:-1;;;;;13699:17:0;13670:4;13699:17;;;:11;:17;;;;;;:21;;;13559:169::o;10213:27::-;;;-1:-1:-1;;;;;10213:27:0;;:::o;18643:118::-;8831:5;;-1:-1:-1;;;;;8831:5:0;8817:10;:19;8809:41;;;;-1:-1:-1;;;;;8809:41:0;;;;;;;;;18490:9;;18501:13;;;;;;;;;;;;-1:-1:-1;;;;;18501:13:0;;;;;18490:9;;18489:10;18481:34;;;;-1:-1:-1;;;;;18481:34:0;;;;;;;;;;-1:-1:-1;18737:9:0;:16;;-1:-1:-1;;18737:16:0;18749:4;18737:16;;;18643:118::o;10586:231::-;8831:5;;-1:-1:-1;;;;;8831:5:0;8817:10;:19;8809:41;;;;-1:-1:-1;;;;;8809:41:0;;;;;;;;;-1:-1:-1;;;;;10710:24:0;;;;;;:45;;-1:-1:-1;10750:5:0;;-1:-1:-1;;;;;10738:17:0;;;10750:5;;10738:17;;10710:45;10702:73;;;;-1:-1:-1;;;;;10702:73:0;;;;;;;;;10786:12;:23;;-1:-1:-1;;;;;;10786:23:0;-1:-1:-1;;;;;10786:23:0;;;;;;;;;;10586:231::o;12937:614::-;8831:5;;-1:-1:-1;;;;;8831:5:0;8817:10;:19;8809:41;;;;-1:-1:-1;;;;;8809:41:0;;;;;;;;;13082:12;;;;;;;;;;;;-1:-1:-1;;;;;13082:12:0;;;;-1:-1:-1;;;;;13060:20:0;;13052:43;;;;-1:-1:-1;;;;;13052:43:0;;;;;;;;;;-1:-1:-1;;;;;;13119:17:0;;13108:8;13119:17;;;:11;:17;;;;;;;;;;13165:9;;;;;;;;;;;-1:-1:-1;;;;;13165:9:0;;;;;;;13119:17;13155:8;13147:28;;;;-1:-1:-1;;;;;13147:28:0;;;;;;;;;;-1:-1:-1;13200:19:0;:26;13241:11;;;13237:185;;13269:15;13287:19;13314:1;13307:4;:8;13287:29;;;;;;;;;;;;;;;;;;13331:19;:28;;-1:-1:-1;;;;;13287:29:0;;;;-1:-1:-1;13287:29:0;;-1:-1:-1;;13351:7:0;;;13331:28;;;;;;;;;;;;;;;;;;:38;;-1:-1:-1;;;;;;13331:38:0;-1:-1:-1;;;;;13331:38:0;;;;;;13384:20;;;;;;:11;:20;;;;;;:26;;;13237:185;13434:19;:31;;-1:-1:-1;;13434:31:0;;;;;;:::i;:::-;-1:-1:-1;;;;;;13483:17:0;;;;;;:11;:17;;;;;;13476:24;;;13518:25;;;13483:17;13518:25;8861:1;;12937:614;:::o;22187:840::-;12458:10;12472:1;12446:23;;;:11;:23;;;;;;;;;;12475:12;;;;;;;;;;;-1:-1:-1;;;;;12475:12:0;;;;;;;12438:50;;;;-1:-1:-1;;;;;12438:50:0;;;;;;;;;;-1:-1:-1;18490:9:0;;18501:13;;;;;;;;;;;;-1:-1:-1;;;;;18501:13:0;;;;;18490:9;;18489:10;18481:34;;;;-1:-1:-1;;;;;18481:34:0;;;;;;;;;;-1:-1:-1;22398:12:0;;;;;;;;;;;;;;;;;22350:5;;22381:10;;;:15;22373:38;;;;-1:-1:-1;;;;;22373:38:0;;;;;;;;;;-1:-1:-1;22437:2:0;22478;22469:11;;22461:19;;22437:2;22491:529;22516:3;22512:1;:7;22491:529;;;22689:24;;22759:2;22752:10;;22739:24;22807:2;22800:10;;22787:24;22859:2;22852:10;;22839:24;22918:40;-1:-1:-1;;;;;22918:22:0;;22739:24;22787;22839;22918:40;:22;:40;:::i;:::-;22977:16;;;;;;;;;;;;;;;;;22892:116;;;;;-1:-1:-1;;;;;22892:116:0;;;;;;;;;;;22491:529;;;;22526:3;22521:8;;;;22491:529;;;;18526:1;;;22187:840;;:::o;21295:168::-;21372:5;;-1:-1:-1;;;;;21372:5:0;21381:10;21372:19;21364:44;;;;-1:-1:-1;;;;;21364:44:0;;;;;;;;;-1:-1:-1;;;;;21419:28:0;21450:5;21419:28;;;:17;:28;;;;;:36;;-1:-1:-1;;21419:36:0;;;21295:168::o;13736:217::-;13901:17;13937:8;;;13736:217::o;15587:801::-;15742:12;16146:21;16214:10;16207:18;;16240:4;16259:2;16276:5;16170:122;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;16170:122:0;;;;-1:-1:-1;;;;;16170:122:0;;38:4:-1;29:7;25:18;67:10;61:17;-1:-1;;;;;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;16170:122:0;16146:146;;16317:5;-1:-1:-1;;;;;16317:10:0;16328:8;16317:20;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;16303:34:0;;;;;16355:25;16372:7;16355:16;:25::i;:::-;16348:32;;;15587:801;;;;;;;:::o;16396:1127::-;16506:4;16829:7;16825:666;;;16888:16;17043:61;;;;17221:2;17216:115;;;;17445:1;17434:12;;16881:584;;17043:61;17084:1;17073:12;;17043:61;;17216:115;17268:2;17265:1;17262;17247:24;17310:1;17304:8;17293:19;;16881:584;;16862:618;-1:-1:-1;17508:7:0;16396:1127::o;20933:2097::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::o;5:118:-1:-;;72:46;110:6;97:20;72:46;;148:352;;;278:3;271:4;263:6;259:17;255:27;245:2;;296:1;293;286:12;245:2;-1:-1;316:20;;356:18;345:30;;342:2;;;388:1;385;378:12;342:2;422:4;414:6;410:17;398:29;;473:3;465:4;457:6;453:17;443:8;439:32;436:41;433:2;;;490:1;487;480:12;433:2;238:262;;;;;;548:739;;684:3;677:4;669:6;665:17;661:27;651:2;;702:1;699;692:12;651:2;739:6;726:20;761:99;776:83;852:6;776:83;;;761:99;;;888:21;;;932:4;920:17;;;;752:108;;-1:-1;945:14;;920:17;1040:1;1025:256;1050:6;1047:1;1044:13;1025:256;;;1133:3;1120:17;1112:6;1108:30;1157:60;1213:3;1201:10;1157:60;;;1145:73;;-1:-1;1241:4;1232:14;;;;1260;;;;;1072:1;1065:9;1025:256;;;1029:14;644:643;;;;;;;;1295:116;;1370:36;1398:6;1392:13;1370:36;;1418:118;;1485:46;1523:6;1510:20;1485:46;;1544:432;;1641:3;1634:4;1626:6;1622:17;1618:27;1608:2;;1659:1;1656;1649:12;1608:2;1696:6;1683:20;1718:60;1733:44;1770:6;1733:44;;1718:60;1709:69;;1798:6;1791:5;1784:21;1834:4;1826:6;1822:17;1867:4;1860:5;1856:16;1902:3;1893:6;1888:3;1884:16;1881:25;1878:2;;;1919:1;1916;1909:12;1878:2;1929:41;1963:6;1958:3;1953;1929:41;;;1601:375;;;;;;;;2030:1389;;2156:4;2144:9;2139:3;2135:19;2131:30;2128:2;;;2174:1;2171;2164:12;2128:2;2192:20;2207:4;2192:20;;;2183:29;-1:-1;2264:31;;2315:18;2304:30;;2301:2;;;2347:1;2344;2337:12;2301:2;2381:93;2470:3;2461:6;2450:9;2446:22;2381:93;;;2357:118;;-1:-1;2538:2;2571:49;2616:3;2592:22;;;2571:49;;;2564:4;2557:5;2553:16;2546:75;2496:136;2684:2;2717:49;2762:3;2753:6;2742:9;2738:22;2717:49;;;2710:4;2703:5;2699:16;2692:75;2642:136;2832:2;2865:49;2910:3;2901:6;2890:9;2886:22;2865:49;;;2858:4;2851:5;2847:16;2840:75;2788:138;2988:3;3022:49;3067:3;3058:6;3047:9;3043:22;3022:49;;;3015:4;3008:5;3004:16;2997:75;2936:147;3150:3;3184:49;3229:3;3220:6;3209:9;3205:22;3184:49;;;3177:4;3170:5;3166:16;3159:75;3093:152;3314:3;3348:49;3393:3;3384:6;3373:9;3369:22;3348:49;;;3341:4;3334:5;3330:16;3323:75;3255:154;2122:1297;;;;;3462:1332;;3574:4;3562:9;3557:3;3553:19;3549:30;3546:2;;;3592:1;3589;3582:12;3546:2;3610:20;3625:4;3610:20;;;3601:29;-1:-1;3681:1;3712:49;3757:3;3737:9;3712:49;;;3688:74;;-1:-1;3828:2;3861:49;3906:3;3882:22;;;3861:49;;;3854:4;3847:5;3843:16;3836:75;3783:139;3979:2;4012:49;4057:3;4048:6;4037:9;4033:22;4012:49;;;4005:4;3998:5;3994:16;3987:75;3932:141;4135:2;4168:49;4213:3;4204:6;4193:9;4189:22;4168:49;;;4161:4;4154:5;4150:16;4143:75;4083:146;4293:3;4327:49;4372:3;4363:6;4352:9;4348:22;4327:49;;;4320:4;4313:5;4309:16;4302:75;4239:149;4448:3;4482:49;4527:3;4518:6;4507:9;4503:22;4482:49;;;4475:4;4468:5;4464:16;4457:75;4398:145;4626:3;4615:9;4611:19;4598:33;4651:18;4643:6;4640:30;4637:2;;;4683:1;4680;4673:12;4637:2;4718:54;4768:3;4759:6;4748:9;4744:22;4718:54;;4926:241;;5030:2;5018:9;5009:7;5005:23;5001:32;4998:2;;;5046:1;5043;5036:12;4998:2;5081:1;5098:53;5143:7;5123:9;5098:53;;5174:617;;;;;5329:3;5317:9;5308:7;5304:23;5300:33;5297:2;;;5346:1;5343;5336:12;5297:2;5381:1;5398:53;5443:7;5423:9;5398:53;;;5388:63;;5360:97;5488:2;5506:53;5551:7;5542:6;5531:9;5527:22;5506:53;;;5496:63;;5467:98;5596:2;5614:53;5659:7;5650:6;5639:9;5635:22;5614:53;;;5604:63;;5575:98;5704:2;5722:53;5767:7;5758:6;5747:9;5743:22;5722:53;;;5712:63;;5683:98;5291:500;;;;;;;;5798:397;;;5937:2;5925:9;5916:7;5912:23;5908:32;5905:2;;;5953:1;5950;5943:12;5905:2;5988:31;;6039:18;6028:30;;6025:2;;;6071:1;6068;6061:12;6025:2;6099:80;6171:7;6162:6;6151:9;6147:22;6099:80;;;6089:90;;;;5967:218;5899:296;;;;;;6202:257;;6314:2;6302:9;6293:7;6289:23;6285:32;6282:2;;;6330:1;6327;6320:12;6282:2;6365:1;6382:61;6435:7;6415:9;6382:61;;6466:526;;;6624:2;6612:9;6603:7;6599:23;6595:32;6592:2;;;6640:1;6637;6630:12;6592:2;6675:31;;6726:18;6715:30;;6712:2;;;6758:1;6755;6748:12;6712:2;6778:90;6860:7;6851:6;6840:9;6836:22;6778:90;;;6768:100;;6654:220;6905:2;6923:53;6968:7;6959:6;6948:9;6944:22;6923:53;;;6913:63;;6884:98;6586:406;;;;;;7000:249;;7147:96;7239:3;7231:6;7147:96;;7257:110;7330:31;7355:5;7330:31;;;7325:3;7318:44;7312:55;;;7576:927;;7753:73;7820:5;7753:73;;;7839:99;7931:6;7926:3;7839:99;;;7832:106;;7961:3;8003:4;7995:6;7991:17;7986:3;7982:27;8029:75;8098:5;8029:75;;;8125:1;8110:354;8135:6;8132:1;8129:13;8110:354;;;8197:9;8191:4;8187:20;8182:3;8175:33;8223:110;8328:4;8319:6;8313:13;8223:110;;;8215:118;;8350:79;8422:6;8350:79;;;8452:4;8443:14;;;;;8340:89;-1:-1;8157:1;8150:9;8110:354;;;-1:-1;8477:4;;7732:771;-1:-1;;;;;;7732:771;8511:111;8588:28;8610:5;8588:28;;8629:110;8702:31;8727:5;8702:31;;8746:356;;8874:38;8906:5;8874:38;;;8924:88;9005:6;9000:3;8924:88;;;8917:95;;9017:52;9062:6;9057:3;9050:4;9043:5;9039:16;9017:52;;;9081:16;;;;;8854:248;-1:-1;;8854:248;9109:315;;9205:34;9233:5;9205:34;;;9251:60;9304:6;9299:3;9251:60;;;9244:67;;9316:52;9361:6;9356:3;9349:4;9342:5;9338:16;9316:52;;;9389:29;9411:6;9389:29;;;9380:39;;;;9185:239;-1:-1;;;9185:239;9778:364;;9938:67;10002:2;9997:3;9938:67;;;-1:-1;;;;;10018:87;;10133:2;10124:12;;9924:218;-1:-1;;9924:218;10151:364;;10311:67;10375:2;10370:3;10311:67;;;-1:-1;;;;;10391:87;;10506:2;10497:12;;10297:218;-1:-1;;10297:218;10524:363;;10684:66;10748:1;10743:3;10684:66;;;-1:-1;;;;;10763:87;;10878:2;10869:12;;10670:217;-1:-1;;10670:217;10984:1479;11226:22;;11159:4;11261:37;;;10984:1479;;11150:14;;;;11313:144;11150:14;11226:22;11313:144;;;11305:152;;11179:290;11543:4;11536:5;11532:16;11526:23;11555:62;11611:4;11606:3;11602:14;11589:11;11555:62;;;11479:144;11697:4;11690:5;11686:16;11680:23;11709:62;11765:4;11760:3;11756:14;11743:11;11709:62;;;11633:144;11853:4;11846:5;11842:16;11836:23;11865:62;11921:4;11916:3;11912:14;11899:11;11865:62;;;11787:146;12017:4;12010:5;12006:16;12000:23;12029:62;12085:4;12080:3;12076:14;12063:11;12029:62;;;11943:154;12186:4;12179:5;12175:16;12169:23;12198:62;12254:4;12249:3;12245:14;12232:11;12198:62;;;12107:159;12357:4;12350:5;12346:16;12340:23;12369:62;12425:4;12420:3;12416:14;12403:11;12369:62;;;-1:-1;12454:4;11132:1331;-1:-1;;;11132:1331;12539:1363;12746:22;;12539:1363;;12680:4;12671:14;;;12774:61;12675:3;12746:22;12774:61;;;12700:141;12918:4;12911:5;12907:16;12901:23;12930:62;12986:4;12981:3;12977:14;12964:11;12930:62;;;12851:147;13077:4;13070:5;13066:16;13060:23;13089:62;13145:4;13140:3;13136:14;13123:11;13089:62;;;13008:149;13241:4;13234:5;13230:16;13224:23;13253:62;13309:4;13304:3;13300:14;13287:11;13253:62;;;13167:154;13407:4;13400:5;13396:16;13390:23;13419:62;13475:4;13470:3;13466:14;13453:11;13419:62;;;13331:156;13569:4;13562:5;13558:16;13552:23;13581:62;13637:4;13632:3;13628:14;13615:11;13581:62;;;13497:152;13726:4;13719:5;13715:16;13709:23;13778:3;13772:4;13768:14;13761:4;13756:3;13752:14;13745:38;13798:66;13859:4;13846:11;13798:66;;;13790:74;12653:1249;-1:-1;;;;;12653:1249;14153:262;;14297:93;14386:3;14377:6;14297:93;;;14290:100;14278:137;-1:-1;;;14278:137;14422:213;14540:2;14525:18;;14554:71;14529:9;14598:6;14554:71;;14642:435;14816:2;14801:18;;14830:71;14805:9;14874:6;14830:71;;;14912:72;14980:2;14969:9;14965:18;14956:6;14912:72;;;14995;15063:2;15052:9;15048:18;15039:6;14995:72;;15084:201;15196:2;15181:18;;15210:65;15185:9;15248:6;15210:65;;15292:293;15426:2;15440:47;;;15411:18;;15501:74;15411:18;15561:6;15501:74;;15592:407;15783:2;15797:47;;;15768:18;;15858:131;15768:18;15858:131;;16006:407;16197:2;16211:47;;;16182:18;;16272:131;16182:18;16272:131;;16420:407;16611:2;16625:47;;;16596:18;;16686:131;16596:18;16686:131;;16834:409;17026:2;17040:47;;;17011:18;;17101:132;17011:18;17219:6;17101:132;;17250:256;17312:2;17306:9;17338:17;;;17413:18;17398:34;;17434:22;;;17395:62;17392:2;;;17470:1;17467;17460:12;17392:2;17486;17479:22;17290:216;;-1:-1;17290:216;17513:277;;17691:18;17683:6;17680:30;17677:2;;;17723:1;17720;17713:12;17677:2;-1:-1;17752:4;17740:17;;;17770:15;;17614:176;17797:254;;17936:18;17928:6;17925:30;17922:2;;;17968:1;17965;17958:12;17922:2;-1:-1;18041:4;18012;17989:17;;;;-1:-1;;17985:33;18031:15;;17859:192;18060:140;18188:4;18176:17;;18157:43;18209:126;18318:12;;18302:33;18780:191;18911:19;;;18960:4;18951:14;;18904:67;19141:144;19276:3;19254:31;-1:-1;19254:31;19465:105;;19534:31;19559:5;19534:31;;19577:92;19650:13;19643:21;;19626:43;19762:128;-1:-1;;;;;19831:54;;19814:76;20502:145;20583:6;20578:3;20573;20560:30;-1:-1;20639:1;20621:16;;20614:27;20553:94;20656:268;20721:1;20728:101;20742:6;20739:1;20736:13;20728:101;;;20809:11;;;20803:18;20790:11;;;20783:39;20764:2;20757:10;20728:101;;;20844:6;20841:1;20838:13;20835:2;;;20909:1;20900:6;20895:3;20891:16;20884:27;20835:2;20705:219;;;;;20932:97;21020:2;21000:14;-1:-1;;20996:28;;20980:49
Swarm Source
bzzr://d474bfae06d790b118359401063ec5d41e52778bdc8a19c499300203bd334e93
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.