Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 2,752 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Sales Mint | 14867190 | 791 days ago | IN | 0.15 ETH | 0.00064567 | ||||
Sales Mint | 14866524 | 791 days ago | IN | 0.15 ETH | 0.00052034 | ||||
Sales Mint | 14861446 | 792 days ago | IN | 0.15 ETH | 0.00066141 | ||||
Sales Mint | 14853641 | 793 days ago | IN | 0.15 ETH | 0.00048423 | ||||
Sales Mint | 14853422 | 793 days ago | IN | 0.15 ETH | 0.00052412 | ||||
Withdraw | 14849600 | 794 days ago | IN | 0 ETH | 0.00123663 | ||||
Sales Mint | 14849509 | 794 days ago | IN | 0.15 ETH | 0.00093562 | ||||
Sales Mint | 14849509 | 794 days ago | IN | 0.15 ETH | 0.0009684 | ||||
Sales Mint | 14849455 | 794 days ago | IN | 0.15 ETH | 0.00109562 | ||||
Sales Mint | 14849240 | 794 days ago | IN | 0.15 ETH | 0.0012448 | ||||
Sales Mint | 14849240 | 794 days ago | IN | 0.15 ETH | 0.00132072 | ||||
Sales Mint | 14849240 | 794 days ago | IN | 0.15 ETH | 0.00126607 | ||||
Sales Mint | 14849202 | 794 days ago | IN | 0.15 ETH | 0.0016302 | ||||
Sales Mint | 14849198 | 794 days ago | IN | 0.15 ETH | 0.00158683 | ||||
Sales Mint | 14849196 | 794 days ago | IN | 0.3 ETH | 0.00184485 | ||||
Sales Mint | 14849194 | 794 days ago | IN | 0.15 ETH | 0.00190136 | ||||
Change Current S... | 14849191 | 794 days ago | IN | 0 ETH | 0.00155382 | ||||
Sales Mint | 14849189 | 794 days ago | IN | 0.15 ETH | 0.0062252 | ||||
Sales Mint | 14849189 | 794 days ago | IN | 0.15 ETH | 0.00622585 | ||||
Sales Mint | 14849189 | 794 days ago | IN | 0.15 ETH | 0.00622442 | ||||
Sales Mint | 14849188 | 794 days ago | IN | 0.15 ETH | 0.00514815 | ||||
Sales Mint | 14849188 | 794 days ago | IN | 0.15 ETH | 0.00647607 | ||||
Sales Mint | 14849188 | 794 days ago | IN | 0.3 ETH | 0.00631369 | ||||
Sales Mint | 14849188 | 794 days ago | IN | 0.3 ETH | 0.00647742 | ||||
Sales Mint | 14849188 | 794 days ago | IN | 0.15 ETH | 0.0064781 |
Loading...
Loading
Contract Name:
ZooverseGen2Controller
Compiler Version
v0.8.13+commit.abaa5c0e
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity 0.8.13; import "@openzeppelin/contracts/utils/cryptography/MerkleProof.sol"; import "./BaseMint.sol"; /** Conditions: - Genesis and Whitelist happens same time - Addresses in claim gets a free mint, they can mint up to 2 at price .12 - Addresses in diamond hand can mint up to 3 at price .12 - Addresses in genesis can mint up to 2 at price .12 - Addresses in whitelist can mint up to 1 at price .15 - Addresses in waitlist can mint up to 1 at price .15 - Public no sales, cannot mint through another contract, at price .18 */ contract ZooverseGen2Controller is BaseMint { mapping(uint256 => mapping(address => bool)) private _whitelist; mapping (address => bool) private _claimed; uint256 private genesisLimit = 2; uint256 public genesisPrice = 0.12 ether; uint256 public whitelistPrice = 0.15 ether; uint256 private _lastSaleType; struct Sale { uint256 limit; uint256 liveIndex; bytes32 root; } mapping(uint256 => Sale) public sales; constructor() { // claim sales[1] = Sale(genesisLimit, 1, 0xe8673ee234e7ce0840f0c8b2df7486e7cad1433368b49d67ef3b6eac282ddb2d); // diamondhand sales[2] = Sale(genesisLimit + 1, 1, 0xb1915c4f45866c50eafd6e31b50005f7ee6e36130b2205d844d63be98e6ebcc1); // genesis sales[3] = Sale(genesisLimit, 1, 0xf9b463e9c56dd6e2cea744dd5e699ced04b36fd7c327b2614baaaedb38afa4fc); // whitelist sales[4] = Sale(1, 1, 0x1dd3a4f211ca8e7a0839f666370a647628d51b1718ffa362ce5d11b24bcfceda); // waitlist sales[5] = Sale(1, 2, 0x8b357472e382e324c75a0b5af28d470e59c0c5c1d358315f512d967c1a3dca5d); _lastSaleType = 5; } modifier correctMintConditions(uint256 saleType, uint256 quantity, bytes32[] calldata proof) { require(currentStage == sales[saleType].liveIndex, "Not Live"); require(nft.getAux(msg.sender) + quantity <= sales[saleType].limit, "Exceeds limit"); require(isPermitted(saleType, msg.sender, proof), "Not verified user"); _; } function salesMint(uint256 quantity, bytes32[] calldata proof, uint256 saleType) external payable callerIsUser correctMintConditions(saleType, quantity, proof) { uint256 mintQuantity = quantity; if(saleType == 1) { if(!_claimed[msg.sender]) { unchecked { mintQuantity++; } _claimed[msg.sender] = true; } } require(msg.value >= quantity * discountedPrice(saleType), "Not enough eth"); nft.setAux(msg.sender, uint64(nft.getAux(msg.sender) + quantity)); _mint(mintQuantity, msg.sender); } function _verify(uint256 saleType, address account, bytes32[] calldata proof) internal view returns (bool) { return MerkleProof.verify(proof, sales[saleType].root, keccak256(abi.encodePacked(account))); } function isPermitted(uint256 saleType, address account, bytes32[] calldata proof) public view returns (bool) { return _verify(saleType, account, proof) || _whitelist[saleType][account]; } function getSaleType(address account, bytes32[] calldata proof) public view returns (uint256) { for(uint256 i = 1; i <= _lastSaleType;) { if(isPermitted(i, account, proof)) return i; unchecked { i++; } } return 0; } function availableToMint(address account, bytes32[] calldata proof) public view returns (uint256) { if(currentStage == 1 || currentStage == 2) { uint256 balance = nft.getAux(account); uint256 saleType = getSaleType(account, proof); if(saleType == 0) return 0; return sales[saleType].limit - balance; } if(currentStage == 3) return maxPerTx; return 0; } function discountedPrice(uint256 saleType) public view returns (uint256) { if(saleType > 3) return whitelistPrice; return genesisPrice; } function updateSale(uint256 saleType, uint256 limit, uint256 liveIndex, bytes32 root) external adminOnly { require(saleType <= _lastSaleType || _lastSaleType + 1 == saleType, "Sale error"); Sale memory newSale; newSale.limit = limit; newSale.liveIndex = liveIndex; newSale.root = root; sales[saleType] = newSale; if(saleType > _lastSaleType) _lastSaleType = saleType; } function updateGenesisPrice(uint256 _price) external adminOnly { genesisPrice = _price; } function updateWhitelistPrice(uint256 _price) external adminOnly { whitelistPrice = _price; } function updateRoot(uint256 saleType, bytes32 _root) external adminOnly { sales[saleType].root = _root; } function addToWhitelist(uint256 saleType, address[] calldata to, bool[] calldata value) external adminOnly { uint256 total = to.length; for(uint256 i = 0; i < total;) { _whitelist[saleType][to[i]] = value[i]; unchecked { i++; } } } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.6.0) (utils/cryptography/MerkleProof.sol) pragma solidity ^0.8.0; /** * @dev These functions deal with verification of Merkle Trees proofs. * * The proofs can be generated using the JavaScript library * https://github.com/miguelmota/merkletreejs[merkletreejs]. * Note: the hashing algorithm should be keccak256 and pair sorting should be enabled. * * See `test/utils/cryptography/MerkleProof.test.js` for some examples. * * WARNING: You should avoid using leaf values that are 64 bytes long prior to * hashing, or use a hash function other than keccak256 for hashing leaves. * This is because the concatenation of a sorted pair of internal nodes in * the merkle tree could be reinterpreted as a leaf value. */ library MerkleProof { /** * @dev Returns true if a `leaf` can be proved to be a part of a Merkle tree * defined by `root`. For this, a `proof` must be provided, containing * sibling hashes on the branch from the leaf to the root of the tree. Each * pair of leaves and each pair of pre-images are assumed to be sorted. */ function verify( bytes32[] memory proof, bytes32 root, bytes32 leaf ) internal pure returns (bool) { return processProof(proof, leaf) == root; } /** * @dev Returns the rebuilt hash obtained by traversing a Merkle tree up * from `leaf` using `proof`. A `proof` is valid if and only if the rebuilt * hash matches the root of the tree. When processing the proof, the pairs * of leafs & pre-images are assumed to be sorted. * * _Available since v4.4._ */ function processProof(bytes32[] memory proof, bytes32 leaf) internal pure returns (bytes32) { bytes32 computedHash = leaf; for (uint256 i = 0; i < proof.length; i++) { bytes32 proofElement = proof[i]; if (computedHash <= proofElement) { // Hash(current computed hash + current element of the proof) computedHash = _efficientHash(computedHash, proofElement); } else { // Hash(current element of the proof + current computed hash) computedHash = _efficientHash(proofElement, computedHash); } } return computedHash; } function _efficientHash(bytes32 a, bytes32 b) private pure returns (bytes32 value) { assembly { mstore(0x00, a) mstore(0x20, b) value := keccak256(0x00, 0x40) } } }
// SPDX-License-Identifier: MIT pragma solidity 0.8.13; import "./AdminController.sol"; import "@openzeppelin/contracts/security/ReentrancyGuard.sol"; import "./IERC721Token.sol"; contract BaseMint is AdminController { IERC721Token public nft; uint256 public price = 0.18 ether; uint256 public maxPerTx = 5; uint256 public currentStage; address public treasury = 0x6745a0b4fDF94Fb0AeD81FE7aC73bDF85aCF8310; function publicMint(uint256 quantity) payable external callerIsUser enoughPrice(quantity, price) { require(currentStage == 3, "Not Live"); require(quantity <= maxPerTx, "Exceeds Limit"); _mint(quantity, msg.sender); } function _mint(uint256 quantity, address to) internal { nft.mint(to, quantity); } function setNFT(IERC721Token _nft) public adminOnly { nft = _nft; } function setPrice(uint256 _price) public adminOnly { price = _price; } function setMaxPerTx(uint256 _max) public adminOnly { maxPerTx = _max; } function changeCurrentStage(uint256 stage) public adminOnly { currentStage = stage; } modifier callerIsUser { require(tx.origin == msg.sender, "Caller is not user"); _; } modifier enoughPrice(uint256 quantity, uint256 mintCost) { require(msg.value >= quantity * mintCost, "Not enough eth"); _; } function changeTreasury(address _treasury) external adminOnly { treasury = _treasury; } function withdraw() external adminOnly { uint256 balance = address(this).balance; payable(treasury).transfer(balance); } }
// SPDX-License-Identifier: MIT pragma solidity 0.8.13; import "./IAdminController.sol"; import "@openzeppelin/contracts/access/Ownable.sol"; abstract contract AdminController is IAdminController, Ownable { mapping(address => bool) public _admins; constructor() { _admins[msg.sender] = true; } function isAdmin(address to) public view returns (bool) { return _admins[to]; } modifier adminOnly() { require(_admins[msg.sender] || msg.sender == owner(), "Not authorised"); _; } function setAdmins(address to, bool value) public adminOnly { _admins[to] = value; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (security/ReentrancyGuard.sol) pragma solidity ^0.8.0; /** * @dev Contract module that helps prevent reentrant calls to a function. * * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier * available, which can be applied to functions to make sure there are no nested * (reentrant) calls to them. * * Note that because there is a single `nonReentrant` guard, functions marked as * `nonReentrant` may not call one another. This can be worked around by making * those functions `private`, and then adding `external` `nonReentrant` entry * points to them. * * TIP: If you would like to learn more about reentrancy and alternative ways * to protect against it, check out our blog post * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]. */ abstract contract ReentrancyGuard { // Booleans are more expensive than uint256 or any type that takes up a full // word because each write operation emits an extra SLOAD to first read the // slot's contents, replace the bits taken up by the boolean, and then write // back. This is the compiler's defense against contract upgrades and // pointer aliasing, and it cannot be disabled. // The values being non-zero value makes deployment a bit more expensive, // but in exchange the refund on every call to nonReentrant will be lower in // amount. Since refunds are capped to a percentage of the total // transaction's gas, it is best to keep them low in cases like this one, to // increase the likelihood of the full refund coming into effect. uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor() { _status = _NOT_ENTERED; } /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and making it call a * `private` function that does the actual work. */ modifier nonReentrant() { // On the first call to nonReentrant, _notEntered will be true require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); // Any calls to nonReentrant after this point will fail _status = _ENTERED; _; // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _status = _NOT_ENTERED; } }
// SPDX-License-Identifier: MIT pragma solidity 0.8.13; import "./IAdminController.sol"; interface IERC721Token is IAdminController { function initialize(string memory _name, string memory _symbol, uint256 _supply, address owner) external; function mint(address to, uint256 quantity) external; function tokenURI(uint256) external view returns (string memory); function setURI(string memory) external; function isApprovedForAll(address owner, address operator) external view returns (bool); function totalSupply() external view returns (uint256); function owner() external view returns (address); function supply() external view returns (uint256); function setSupply() external; function numberMinted(address) external view returns (uint256); function getAux(address) external view returns (uint256); function setAux(address, uint64) external; }
// SPDX-License-Identifier: MIT pragma solidity 0.8.13; interface IAdminController { function setAdmins(address to, bool value) external; function isAdmin(address) external view returns (bool); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (access/Ownable.sol) pragma solidity ^0.8.0; import "../utils/Context.sol"; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } }
{ "optimizer": { "enabled": true, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_admins","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"saleType","type":"uint256"},{"internalType":"address[]","name":"to","type":"address[]"},{"internalType":"bool[]","name":"value","type":"bool[]"}],"name":"addToWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"availableToMint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"stage","type":"uint256"}],"name":"changeCurrentStage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_treasury","type":"address"}],"name":"changeTreasury","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"currentStage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"saleType","type":"uint256"}],"name":"discountedPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"genesisPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"getSaleType","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"isAdmin","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"saleType","type":"uint256"},{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"isPermitted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxPerTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nft","outputs":[{"internalType":"contract IERC721Token","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"price","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"quantity","type":"uint256"}],"name":"publicMint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"sales","outputs":[{"internalType":"uint256","name":"limit","type":"uint256"},{"internalType":"uint256","name":"liveIndex","type":"uint256"},{"internalType":"bytes32","name":"root","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"},{"internalType":"uint256","name":"saleType","type":"uint256"}],"name":"salesMint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAdmins","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_max","type":"uint256"}],"name":"setMaxPerTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC721Token","name":"_nft","type":"address"}],"name":"setNFT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_price","type":"uint256"}],"name":"setPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasury","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_price","type":"uint256"}],"name":"updateGenesisPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"saleType","type":"uint256"},{"internalType":"bytes32","name":"_root","type":"bytes32"}],"name":"updateRoot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"saleType","type":"uint256"},{"internalType":"uint256","name":"limit","type":"uint256"},{"internalType":"uint256","name":"liveIndex","type":"uint256"},{"internalType":"bytes32","name":"root","type":"bytes32"}],"name":"updateSale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_price","type":"uint256"}],"name":"updateWhitelistPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"whitelistPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405267027f7d0bdb9200006003556005600455600680546001600160a01b031916736745a0b4fdf94fb0aed81fe7ac73bdf85acf831017905560026009556701aa535d3d0c0000600a55670214e8348c4f0000600b5534801561006457600080fd5b5061006e33610406565b336000908152600160208181526040808420805460ff1916841790558051606080820183526009548083528285018681527fe8673ee234e7ce0840f0c8b2df7486e7cad1433368b49d67ef3b6eac282ddb2d84860190815297879052600d90955291517ffd54ff1ed53f34a900b24c5ba64f85761163b5d82d98a47b9bd80e45466993c55592517ffd54ff1ed53f34a900b24c5ba64f85761163b5d82d98a47b9bd80e45466993c65593517ffd54ff1ed53f34a900b24c5ba64f85761163b5d82d98a47b9bd80e45466993c7558051918201905291829161014f9190610456565b8152600160208083018290527fb1915c4f45866c50eafd6e31b50005f7ee6e36130b2205d844d63be98e6ebcc160409384015260026000818152600d80845286517f10a81eed9d63d16face5e76357905348e6253d3394086026bb2bf2145d7cc24955868401517f10a81eed9d63d16face5e76357905348e6253d3394086026bb2bf2145d7cc24a55958501517f10a81eed9d63d16face5e76357905348e6253d3394086026bb2bf2145d7cc24b5584516060808201875260095482528185018681527ff9b463e9c56dd6e2cea744dd5e699ced04b36fd7c327b2614baaaedb38afa4fc8389019081526003855289875292517f26b4a10d0f0b04925c23bd4480ee147c916e5e87a7d68206a533dad160ac81e255517f26b4a10d0f0b04925c23bd4480ee147c916e5e87a7d68206a533dad160ac81e35590517f26b4a10d0f0b04925c23bd4480ee147c916e5e87a7d68206a533dad160ac81e455855180820187528581528085018681527f1dd3a4f211ca8e7a0839f666370a647628d51b1718ffa362ce5d11b24bcfceda8289019081526004855289875291517fafafe8948a4ed9d478b1e9a5780b119b5edd00ea7d07bc35bef7c814824eb94b55517fafafe8948a4ed9d478b1e9a5780b119b5edd00ea7d07bc35bef7c814824eb94c55517fafafe8948a4ed9d478b1e9a5780b119b5edd00ea7d07bc35bef7c814824eb94d55855190810186529384528383019182527f8b357472e382e324c75a0b5af28d470e59c0c5c1d358315f512d967c1a3dca5d9484019485526005908190529490915290517fa5049387d9cb649c59f4bda666105ba636c2a103d8e2b232ba4d125737cd214955517fa5049387d9cb649c59f4bda666105ba636c2a103d8e2b232ba4d125737cd214a55517fa5049387d9cb649c59f4bda666105ba636c2a103d8e2b232ba4d125737cd214b55600c5561047c565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000821982111561047757634e487b7160e01b600052601160045260246000fd5b500190565b6118128061048b6000396000f3fe6080604052600436106101d85760003560e01c806391b7f5ed11610102578063e034a7d611610095578063f2fde38b11610064578063f2fde38b1461058a578063f56e9c66146105aa578063f968adbe146105ca578063fc1a1c36146105e057600080fd5b8063e034a7d61461050a578063e03ab6c11461052a578063ed8b74b71461054a578063f1f41ef41461056a57600080fd5b8063b01ffc02116100d1578063b01ffc0214610453578063b14f2a3914610473578063b5f522f714610493578063c6f6f216146104ea57600080fd5b806391b7f5ed146103dd5780639318100c146103fd5780639812035e1461041d578063a035b1fe1461043d57600080fd5b80635bf5d54c1161017a57806371743748116101495780637174374814610369578063728cce7c146103895780638b5b83821461039f5780638da5cb5b146103bf57600080fd5b80635bf5d54c146102f057806361d027b3146103145780636da6c2b514610334578063715018a61461035457600080fd5b806331cd5c09116101b657806331cd5c09146102705780633ccfd60b1461029057806347ccca02146102a55780634a6bdfac146102dd57600080fd5b80630d5e2053146101dd57806324d7806c146102225780632db115441461025b575b600080fd5b3480156101e957600080fd5b5061020d6101f836600461144f565b60016020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b34801561022e57600080fd5b5061020d61023d36600461144f565b6001600160a01b031660009081526001602052604090205460ff1690565b61026e61026936600461146c565b6105f6565b005b34801561027c57600080fd5b5061026e61028b36600461149a565b61071c565b34801561029c57600080fd5b5061026e61078b565b3480156102b157600080fd5b506002546102c5906001600160a01b031681565b6040516001600160a01b039091168152602001610219565b61026e6102eb36600461151b565b61080d565b3480156102fc57600080fd5b5061030660055481565b604051908152602001610219565b34801561032057600080fd5b506006546102c5906001600160a01b031681565b34801561034057600080fd5b5061030661034f36600461156e565b610b4d565b34801561036057600080fd5b5061026e610c3b565b34801561037557600080fd5b5061026e6103843660046115c3565b610ca1565b34801561039557600080fd5b50610306600a5481565b3480156103ab57600080fd5b506103066103ba36600461156e565b610d87565b3480156103cb57600080fd5b506000546001600160a01b03166102c5565b3480156103e957600080fd5b5061026e6103f836600461146c565b610dc0565b34801561040957600080fd5b5061020d61041836600461163d565b610e09565b34801561042957600080fd5b5061026e61043836600461146c565b610e4d565b34801561044957600080fd5b5061030660035481565b34801561045f57600080fd5b5061026e61046e36600461146c565b610e96565b34801561047f57600080fd5b5061026e61048e36600461144f565b610edf565b34801561049f57600080fd5b506104cf6104ae36600461146c565b600d6020526000908152604090208054600182015460029092015490919083565b60408051938452602084019290925290820152606001610219565b3480156104f657600080fd5b5061026e61050536600461146c565b610f45565b34801561051657600080fd5b5061026e610525366004611699565b610f8e565b34801561053657600080fd5b5061030661054536600461146c565b61107f565b34801561055657600080fd5b5061026e6105653660046116cb565b61109a565b34801561057657600080fd5b5061026e61058536600461146c565b6110f3565b34801561059657600080fd5b5061026e6105a536600461144f565b61113c565b3480156105b657600080fd5b5061026e6105c536600461144f565b611207565b3480156105d657600080fd5b5061030660045481565b3480156105ec57600080fd5b50610306600b5481565b32331461063f5760405162461bcd60e51b815260206004820152601260248201527121b0b63632b91034b9903737ba103ab9b2b960711b60448201526064015b60405180910390fd5b600354819061064e8183611703565b34101561068e5760405162461bcd60e51b815260206004820152600e60248201526d09cdee840cadcdeeaced040cae8d60931b6044820152606401610636565b6005546003146106cb5760405162461bcd60e51b81526020600482015260086024820152674e6f74204c69766560c01b6044820152606401610636565b60045483111561070d5760405162461bcd60e51b815260206004820152600d60248201526c115e18d959591cc8131a5b5a5d609a1b6044820152606401610636565b610717833361126d565b505050565b3360009081526001602052604090205460ff168061074457506000546001600160a01b031633145b6107605760405162461bcd60e51b815260040161063690611722565b6001600160a01b03919091166000908152600160205260409020805460ff1916911515919091179055565b3360009081526001602052604090205460ff16806107b357506000546001600160a01b031633145b6107cf5760405162461bcd60e51b815260040161063690611722565b60065460405147916001600160a01b03169082156108fc029083906000818181858888f19350505050158015610809573d6000803e3d6000fd5b5050565b3233146108515760405162461bcd60e51b815260206004820152601260248201527121b0b63632b91034b9903737ba103ab9b2b960711b6044820152606401610636565b80848484600d600085815260200190815260200160002060010154600554146108a75760405162461bcd60e51b81526020600482015260086024820152674e6f74204c69766560c01b6044820152606401610636565b6000848152600d602052604090819020546002549151635f858baf60e11b8152336004820152909185916001600160a01b039091169063bf0b175e90602401602060405180830381865afa158015610903573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610927919061174a565b6109319190611763565b111561096f5760405162461bcd60e51b815260206004820152600d60248201526c115e18d959591cc81b1a5b5a5d609a1b6044820152606401610636565b61097b84338484610e09565b6109bb5760405162461bcd60e51b81526020600482015260116024820152702737ba103b32b934b334b2b2103ab9b2b960791b6044820152606401610636565b8760018690036109fb573360009081526008602052604090205460ff166109fb57336000908152600860205260409020805460ff19166001908117909155015b610a048661107f565b610a0e908a611703565b341015610a4e5760405162461bcd60e51b815260206004820152600e60248201526d09cdee840cadcdeeaced040cae8d60931b6044820152606401610636565b600254604051635f858baf60e11b815233600482018190526001600160a01b039092169163453ab141918c90849063bf0b175e90602401602060405180830381865afa158015610aa2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac6919061174a565b610ad09190611763565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015267ffffffffffffffff166024820152604401600060405180830381600087803b158015610b2057600080fd5b505af1158015610b34573d6000803e3d6000fd5b50505050610b42813361126d565b505050505050505050565b600060055460011480610b6257506005546002145b15610c1d57600254604051635f858baf60e11b81526001600160a01b038681166004830152600092169063bf0b175e90602401602060405180830381865afa158015610bb2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bd6919061174a565b90506000610be5868686610d87565b905080600003610bfa57600092505050610c34565b6000818152600d6020526040902054610c1490839061177b565b92505050610c34565b600554600303610c305750600454610c34565b5060005b9392505050565b6000546001600160a01b03163314610c955760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610636565b610c9f60006112d7565b565b3360009081526001602052604090205460ff1680610cc957506000546001600160a01b031633145b610ce55760405162461bcd60e51b815260040161063690611722565b8260005b81811015610d7e57838382818110610d0357610d03611792565b9050602002016020810190610d1891906117a8565b600088815260076020526040812090888885818110610d3957610d39611792565b9050602002016020810190610d4e919061144f565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055600101610ce9565b50505050505050565b600060015b600c548111610db557610da181868686610e09565b15610dad579050610c34565b600101610d8c565b506000949350505050565b3360009081526001602052604090205460ff1680610de857506000546001600160a01b031633145b610e045760405162461bcd60e51b815260040161063690611722565b600355565b6000610e1785858585611327565b80610e44575060008581526007602090815260408083206001600160a01b038816845290915290205460ff165b95945050505050565b3360009081526001602052604090205460ff1680610e7557506000546001600160a01b031633145b610e915760405162461bcd60e51b815260040161063690611722565b600a55565b3360009081526001602052604090205460ff1680610ebe57506000546001600160a01b031633145b610eda5760405162461bcd60e51b815260040161063690611722565b600b55565b3360009081526001602052604090205460ff1680610f0757506000546001600160a01b031633145b610f235760405162461bcd60e51b815260040161063690611722565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b3360009081526001602052604090205460ff1680610f6d57506000546001600160a01b031633145b610f895760405162461bcd60e51b815260040161063690611722565b600455565b3360009081526001602052604090205460ff1680610fb657506000546001600160a01b031633145b610fd25760405162461bcd60e51b815260040161063690611722565b600c5484111580610ff0575083600c546001610fee9190611763565b145b6110295760405162461bcd60e51b815260206004820152600a60248201526929b0b6329032b93937b960b11b6044820152606401610636565b6040805160608101825284815260208082018581528284018581526000898152600d9093529390912082518155905160018201559151600290920191909155600c5485111561107857600c8590555b5050505050565b60006003821115611092575050600b5490565b5050600a5490565b3360009081526001602052604090205460ff16806110c257506000546001600160a01b031633145b6110de5760405162461bcd60e51b815260040161063690611722565b6000918252600d602052604090912060020155565b3360009081526001602052604090205460ff168061111b57506000546001600160a01b031633145b6111375760405162461bcd60e51b815260040161063690611722565b600555565b6000546001600160a01b031633146111965760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610636565b6001600160a01b0381166111fb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610636565b611204816112d7565b50565b3360009081526001602052604090205460ff168061122f57506000546001600160a01b031633145b61124b5760405162461bcd60e51b815260040161063690611722565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6002546040516340c10f1960e01b81526001600160a01b03838116600483015260248201859052909116906340c10f1990604401600060405180830381600087803b1580156112bb57600080fd5b505af11580156112cf573d6000803e3d6000fd5b505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000610e4483838080602002602001604051908101604052809392919081815260200183836020028082843760009201829052508a8152600d602090815260409182902060020154915191945061139a93508a92500160609190911b6bffffffffffffffffffffffff1916815260140190565b604051602081830303815290604052805190602001206000826113bd85846113c6565b14949350505050565b600081815b84518110156114325760008582815181106113e8576113e8611792565b6020026020010151905080831161140e576000838152602082905260409020925061141f565b600081815260208490526040902092505b508061142a816117c3565b9150506113cb565b509392505050565b6001600160a01b038116811461120457600080fd5b60006020828403121561146157600080fd5b8135610c348161143a565b60006020828403121561147e57600080fd5b5035919050565b8035801515811461149557600080fd5b919050565b600080604083850312156114ad57600080fd5b82356114b88161143a565b91506114c660208401611485565b90509250929050565b60008083601f8401126114e157600080fd5b50813567ffffffffffffffff8111156114f957600080fd5b6020830191508360208260051b850101111561151457600080fd5b9250929050565b6000806000806060858703121561153157600080fd5b84359350602085013567ffffffffffffffff81111561154f57600080fd5b61155b878288016114cf565b9598909750949560400135949350505050565b60008060006040848603121561158357600080fd5b833561158e8161143a565b9250602084013567ffffffffffffffff8111156115aa57600080fd5b6115b6868287016114cf565b9497909650939450505050565b6000806000806000606086880312156115db57600080fd5b85359450602086013567ffffffffffffffff808211156115fa57600080fd5b61160689838a016114cf565b9096509450604088013591508082111561161f57600080fd5b5061162c888289016114cf565b969995985093965092949392505050565b6000806000806060858703121561165357600080fd5b8435935060208501356116658161143a565b9250604085013567ffffffffffffffff81111561168157600080fd5b61168d878288016114cf565b95989497509550505050565b600080600080608085870312156116af57600080fd5b5050823594602084013594506040840135936060013592509050565b600080604083850312156116de57600080fd5b50508035926020909101359150565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161561171d5761171d6116ed565b500290565b6020808252600e908201526d139bdd08185d5d1a1bdc9a5cd95960921b604082015260600190565b60006020828403121561175c57600080fd5b5051919050565b60008219821115611776576117766116ed565b500190565b60008282101561178d5761178d6116ed565b500390565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156117ba57600080fd5b610c3482611485565b6000600182016117d5576117d56116ed565b506001019056fea26469706673582212204ffae353eec6de984c9e8915065b8c30f9b3dc82cb83e02390ec4f8a1db8e33f64736f6c634300080d0033
Deployed Bytecode
0x6080604052600436106101d85760003560e01c806391b7f5ed11610102578063e034a7d611610095578063f2fde38b11610064578063f2fde38b1461058a578063f56e9c66146105aa578063f968adbe146105ca578063fc1a1c36146105e057600080fd5b8063e034a7d61461050a578063e03ab6c11461052a578063ed8b74b71461054a578063f1f41ef41461056a57600080fd5b8063b01ffc02116100d1578063b01ffc0214610453578063b14f2a3914610473578063b5f522f714610493578063c6f6f216146104ea57600080fd5b806391b7f5ed146103dd5780639318100c146103fd5780639812035e1461041d578063a035b1fe1461043d57600080fd5b80635bf5d54c1161017a57806371743748116101495780637174374814610369578063728cce7c146103895780638b5b83821461039f5780638da5cb5b146103bf57600080fd5b80635bf5d54c146102f057806361d027b3146103145780636da6c2b514610334578063715018a61461035457600080fd5b806331cd5c09116101b657806331cd5c09146102705780633ccfd60b1461029057806347ccca02146102a55780634a6bdfac146102dd57600080fd5b80630d5e2053146101dd57806324d7806c146102225780632db115441461025b575b600080fd5b3480156101e957600080fd5b5061020d6101f836600461144f565b60016020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b34801561022e57600080fd5b5061020d61023d36600461144f565b6001600160a01b031660009081526001602052604090205460ff1690565b61026e61026936600461146c565b6105f6565b005b34801561027c57600080fd5b5061026e61028b36600461149a565b61071c565b34801561029c57600080fd5b5061026e61078b565b3480156102b157600080fd5b506002546102c5906001600160a01b031681565b6040516001600160a01b039091168152602001610219565b61026e6102eb36600461151b565b61080d565b3480156102fc57600080fd5b5061030660055481565b604051908152602001610219565b34801561032057600080fd5b506006546102c5906001600160a01b031681565b34801561034057600080fd5b5061030661034f36600461156e565b610b4d565b34801561036057600080fd5b5061026e610c3b565b34801561037557600080fd5b5061026e6103843660046115c3565b610ca1565b34801561039557600080fd5b50610306600a5481565b3480156103ab57600080fd5b506103066103ba36600461156e565b610d87565b3480156103cb57600080fd5b506000546001600160a01b03166102c5565b3480156103e957600080fd5b5061026e6103f836600461146c565b610dc0565b34801561040957600080fd5b5061020d61041836600461163d565b610e09565b34801561042957600080fd5b5061026e61043836600461146c565b610e4d565b34801561044957600080fd5b5061030660035481565b34801561045f57600080fd5b5061026e61046e36600461146c565b610e96565b34801561047f57600080fd5b5061026e61048e36600461144f565b610edf565b34801561049f57600080fd5b506104cf6104ae36600461146c565b600d6020526000908152604090208054600182015460029092015490919083565b60408051938452602084019290925290820152606001610219565b3480156104f657600080fd5b5061026e61050536600461146c565b610f45565b34801561051657600080fd5b5061026e610525366004611699565b610f8e565b34801561053657600080fd5b5061030661054536600461146c565b61107f565b34801561055657600080fd5b5061026e6105653660046116cb565b61109a565b34801561057657600080fd5b5061026e61058536600461146c565b6110f3565b34801561059657600080fd5b5061026e6105a536600461144f565b61113c565b3480156105b657600080fd5b5061026e6105c536600461144f565b611207565b3480156105d657600080fd5b5061030660045481565b3480156105ec57600080fd5b50610306600b5481565b32331461063f5760405162461bcd60e51b815260206004820152601260248201527121b0b63632b91034b9903737ba103ab9b2b960711b60448201526064015b60405180910390fd5b600354819061064e8183611703565b34101561068e5760405162461bcd60e51b815260206004820152600e60248201526d09cdee840cadcdeeaced040cae8d60931b6044820152606401610636565b6005546003146106cb5760405162461bcd60e51b81526020600482015260086024820152674e6f74204c69766560c01b6044820152606401610636565b60045483111561070d5760405162461bcd60e51b815260206004820152600d60248201526c115e18d959591cc8131a5b5a5d609a1b6044820152606401610636565b610717833361126d565b505050565b3360009081526001602052604090205460ff168061074457506000546001600160a01b031633145b6107605760405162461bcd60e51b815260040161063690611722565b6001600160a01b03919091166000908152600160205260409020805460ff1916911515919091179055565b3360009081526001602052604090205460ff16806107b357506000546001600160a01b031633145b6107cf5760405162461bcd60e51b815260040161063690611722565b60065460405147916001600160a01b03169082156108fc029083906000818181858888f19350505050158015610809573d6000803e3d6000fd5b5050565b3233146108515760405162461bcd60e51b815260206004820152601260248201527121b0b63632b91034b9903737ba103ab9b2b960711b6044820152606401610636565b80848484600d600085815260200190815260200160002060010154600554146108a75760405162461bcd60e51b81526020600482015260086024820152674e6f74204c69766560c01b6044820152606401610636565b6000848152600d602052604090819020546002549151635f858baf60e11b8152336004820152909185916001600160a01b039091169063bf0b175e90602401602060405180830381865afa158015610903573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610927919061174a565b6109319190611763565b111561096f5760405162461bcd60e51b815260206004820152600d60248201526c115e18d959591cc81b1a5b5a5d609a1b6044820152606401610636565b61097b84338484610e09565b6109bb5760405162461bcd60e51b81526020600482015260116024820152702737ba103b32b934b334b2b2103ab9b2b960791b6044820152606401610636565b8760018690036109fb573360009081526008602052604090205460ff166109fb57336000908152600860205260409020805460ff19166001908117909155015b610a048661107f565b610a0e908a611703565b341015610a4e5760405162461bcd60e51b815260206004820152600e60248201526d09cdee840cadcdeeaced040cae8d60931b6044820152606401610636565b600254604051635f858baf60e11b815233600482018190526001600160a01b039092169163453ab141918c90849063bf0b175e90602401602060405180830381865afa158015610aa2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac6919061174a565b610ad09190611763565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015267ffffffffffffffff166024820152604401600060405180830381600087803b158015610b2057600080fd5b505af1158015610b34573d6000803e3d6000fd5b50505050610b42813361126d565b505050505050505050565b600060055460011480610b6257506005546002145b15610c1d57600254604051635f858baf60e11b81526001600160a01b038681166004830152600092169063bf0b175e90602401602060405180830381865afa158015610bb2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bd6919061174a565b90506000610be5868686610d87565b905080600003610bfa57600092505050610c34565b6000818152600d6020526040902054610c1490839061177b565b92505050610c34565b600554600303610c305750600454610c34565b5060005b9392505050565b6000546001600160a01b03163314610c955760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610636565b610c9f60006112d7565b565b3360009081526001602052604090205460ff1680610cc957506000546001600160a01b031633145b610ce55760405162461bcd60e51b815260040161063690611722565b8260005b81811015610d7e57838382818110610d0357610d03611792565b9050602002016020810190610d1891906117a8565b600088815260076020526040812090888885818110610d3957610d39611792565b9050602002016020810190610d4e919061144f565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055600101610ce9565b50505050505050565b600060015b600c548111610db557610da181868686610e09565b15610dad579050610c34565b600101610d8c565b506000949350505050565b3360009081526001602052604090205460ff1680610de857506000546001600160a01b031633145b610e045760405162461bcd60e51b815260040161063690611722565b600355565b6000610e1785858585611327565b80610e44575060008581526007602090815260408083206001600160a01b038816845290915290205460ff165b95945050505050565b3360009081526001602052604090205460ff1680610e7557506000546001600160a01b031633145b610e915760405162461bcd60e51b815260040161063690611722565b600a55565b3360009081526001602052604090205460ff1680610ebe57506000546001600160a01b031633145b610eda5760405162461bcd60e51b815260040161063690611722565b600b55565b3360009081526001602052604090205460ff1680610f0757506000546001600160a01b031633145b610f235760405162461bcd60e51b815260040161063690611722565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b3360009081526001602052604090205460ff1680610f6d57506000546001600160a01b031633145b610f895760405162461bcd60e51b815260040161063690611722565b600455565b3360009081526001602052604090205460ff1680610fb657506000546001600160a01b031633145b610fd25760405162461bcd60e51b815260040161063690611722565b600c5484111580610ff0575083600c546001610fee9190611763565b145b6110295760405162461bcd60e51b815260206004820152600a60248201526929b0b6329032b93937b960b11b6044820152606401610636565b6040805160608101825284815260208082018581528284018581526000898152600d9093529390912082518155905160018201559151600290920191909155600c5485111561107857600c8590555b5050505050565b60006003821115611092575050600b5490565b5050600a5490565b3360009081526001602052604090205460ff16806110c257506000546001600160a01b031633145b6110de5760405162461bcd60e51b815260040161063690611722565b6000918252600d602052604090912060020155565b3360009081526001602052604090205460ff168061111b57506000546001600160a01b031633145b6111375760405162461bcd60e51b815260040161063690611722565b600555565b6000546001600160a01b031633146111965760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610636565b6001600160a01b0381166111fb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610636565b611204816112d7565b50565b3360009081526001602052604090205460ff168061122f57506000546001600160a01b031633145b61124b5760405162461bcd60e51b815260040161063690611722565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6002546040516340c10f1960e01b81526001600160a01b03838116600483015260248201859052909116906340c10f1990604401600060405180830381600087803b1580156112bb57600080fd5b505af11580156112cf573d6000803e3d6000fd5b505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000610e4483838080602002602001604051908101604052809392919081815260200183836020028082843760009201829052508a8152600d602090815260409182902060020154915191945061139a93508a92500160609190911b6bffffffffffffffffffffffff1916815260140190565b604051602081830303815290604052805190602001206000826113bd85846113c6565b14949350505050565b600081815b84518110156114325760008582815181106113e8576113e8611792565b6020026020010151905080831161140e576000838152602082905260409020925061141f565b600081815260208490526040902092505b508061142a816117c3565b9150506113cb565b509392505050565b6001600160a01b038116811461120457600080fd5b60006020828403121561146157600080fd5b8135610c348161143a565b60006020828403121561147e57600080fd5b5035919050565b8035801515811461149557600080fd5b919050565b600080604083850312156114ad57600080fd5b82356114b88161143a565b91506114c660208401611485565b90509250929050565b60008083601f8401126114e157600080fd5b50813567ffffffffffffffff8111156114f957600080fd5b6020830191508360208260051b850101111561151457600080fd5b9250929050565b6000806000806060858703121561153157600080fd5b84359350602085013567ffffffffffffffff81111561154f57600080fd5b61155b878288016114cf565b9598909750949560400135949350505050565b60008060006040848603121561158357600080fd5b833561158e8161143a565b9250602084013567ffffffffffffffff8111156115aa57600080fd5b6115b6868287016114cf565b9497909650939450505050565b6000806000806000606086880312156115db57600080fd5b85359450602086013567ffffffffffffffff808211156115fa57600080fd5b61160689838a016114cf565b9096509450604088013591508082111561161f57600080fd5b5061162c888289016114cf565b969995985093965092949392505050565b6000806000806060858703121561165357600080fd5b8435935060208501356116658161143a565b9250604085013567ffffffffffffffff81111561168157600080fd5b61168d878288016114cf565b95989497509550505050565b600080600080608085870312156116af57600080fd5b5050823594602084013594506040840135936060013592509050565b600080604083850312156116de57600080fd5b50508035926020909101359150565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161561171d5761171d6116ed565b500290565b6020808252600e908201526d139bdd08185d5d1a1bdc9a5cd95960921b604082015260600190565b60006020828403121561175c57600080fd5b5051919050565b60008219821115611776576117766116ed565b500190565b60008282101561178d5761178d6116ed565b500390565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156117ba57600080fd5b610c3482611485565b6000600182016117d5576117d56116ed565b506001019056fea26469706673582212204ffae353eec6de984c9e8915065b8c30f9b3dc82cb83e02390ec4f8a1db8e33f64736f6c634300080d0033
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ 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.