Feature Tip: Add private address tag to any address under My Name Tag !
ERC-721
Overview
Max Total Supply
10 REKEY
Holders
2
Market
Volume (24H)
N/A
Min Price (24H)
N/A
Max Price (24H)
N/A
Other Info
Token Contract
Balance
1 REKEYLoading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Similar Match Source Code This contract matches the deployed Bytecode of the Source Code for Contract 0x37c02308...C2a66f60f The constructor portion of the code might be different and could alter the actual behaviour of the contract
Contract Name:
DN404Mirror
Compiler Version
v0.8.24+commit.e11b9ed9
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-02-12 */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /// @title DN404Mirror /// @notice DN404Mirror provides an interface for interacting with the /// NFT tokens in a DN404 implementation. /// /// @author vectorized.eth (@optimizoor) /// @author Quit (@0xQuit) /// @author Michael Amadi (@AmadiMichaels) /// @author cygaar (@0xCygaar) /// @author Thomas (@0xjustadev) /// @author Harrison (@PopPunkOnChain) /// /// @dev Note: /// - The ERC721 data is stored in the base DN404 contract. contract DN404Mirror { /*«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-*/ /* EVENTS */ /*-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»*/ event Approval(address indexed owner, address indexed spender, uint256 indexed id); event Transfer(address indexed from, address indexed to, uint256 indexed id); event ApprovalForAll(address indexed owner, address indexed operator, bool approved); /// @dev `keccak256(bytes("Transfer(address,address,uint256)"))`. uint256 private constant _TRANSFER_EVENT_SIGNATURE = 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef; /*«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-*/ /* CUSTOM ERRORS */ /*-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»*/ /// @dev Thrown when a call for an NFT function did not originate /// from the base DN404 contract. error Unauthorized(); /// @dev Thrown when transferring an NFT to a contract address that /// does not implement ERC721Receiver. error TransferToNonERC721ReceiverImplementer(); /// @dev Thrown when linking to the DN404 base contract and the /// DN404 supportsInterface check fails or the call reverts. error CannotLink(); /// @dev Thrown when a linkMirrorContract call is received and the /// NFT mirror contract has already been linked to a DN404 base contract. error AlreadyLinked(); /// @dev Thrown when retrieving the rootERC20 address when a link has not /// been established. error NotLinked(); /*«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-*/ /* STORAGE */ /*-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»*/ /// @dev Struct contain the NFT mirror contract storage. struct DN404NFTStorage { address rootERC20; address deployer; } /// @dev Returns a storage pointer for DN404NFTStorage. function _getDN404NFTStorage() internal pure returns (DN404NFTStorage storage $) { /// @solidity memory-safe-assembly assembly { // keccak256(abi.encode(uint256(keccak256("dn404.nft")) - 1)) & ~bytes32(uint256(0xff)) $.slot := 0xe8cb618a1de8ad2a6a7b358523c369cb09f40cc15da64205134c7e55c6a86700 } } /*«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-*/ /* CONSTRUCTOR */ /*-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»*/ constructor(address deployer) { // For non-proxies, we will store the deployer so that only the deployer can // link the root contract. _getDN404NFTStorage().deployer = deployer; } /*«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-*/ /* ERC721 OPERATIONS */ /*-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»*/ /// @dev Returns the token collection name from the base DN404 contract. function name() public view virtual returns (string memory result) { address root = rootERC20(); /// @solidity memory-safe-assembly assembly { result := mload(0x40) mstore(result, 0x06fdde03) // `name()`. if iszero(staticcall(gas(), root, add(result, 0x1c), 0x04, 0x00, 0x00)) { returndatacopy(result, 0x00, returndatasize()) revert(result, returndatasize()) } returndatacopy(0x00, 0x00, 0x20) returndatacopy(result, mload(0x00), 0x20) returndatacopy(add(result, 0x20), add(mload(0x00), 0x20), mload(result)) mstore(0x40, add(add(result, 0x20), mload(result))) } } /// @dev Returns the token collection symbol from the base DN404 contract. function symbol() public view virtual returns (string memory result) { address root = rootERC20(); /// @solidity memory-safe-assembly assembly { result := mload(0x40) mstore(result, 0x95d89b41) // `symbol()`. if iszero(staticcall(gas(), root, add(result, 0x1c), 0x04, 0x00, 0x00)) { returndatacopy(result, 0x00, returndatasize()) revert(result, returndatasize()) } returndatacopy(0x00, 0x00, 0x20) returndatacopy(result, mload(0x00), 0x20) returndatacopy(add(result, 0x20), add(mload(0x00), 0x20), mload(result)) mstore(0x40, add(add(result, 0x20), mload(result))) } } /// @dev Returns the Uniform Resource Identifier (URI) for token `id` from the base DN404 contract. function tokenURI(uint256 id) public view virtual returns (string memory result) { address root = rootERC20(); /// @solidity memory-safe-assembly assembly { result := mload(0x40) mstore(result, 0xc87b56dd) // `tokenURI()`. mstore(add(result, 0x20), id) if iszero(staticcall(gas(), root, add(result, 0x1c), 0x24, 0x00, 0x00)) { returndatacopy(result, 0x00, returndatasize()) revert(result, returndatasize()) } returndatacopy(0x00, 0x00, 0x20) returndatacopy(result, mload(0x00), 0x20) returndatacopy(add(result, 0x20), add(mload(0x00), 0x20), mload(result)) mstore(0x40, add(add(result, 0x20), mload(result))) } } /// @dev Returns the total NFT supply from the base DN404 contract. function totalSupply() public view returns (uint256 result) { address root = rootERC20(); /// @solidity memory-safe-assembly assembly { mstore(0x00, 0xe2c79281) // `totalNFTSupply()`. if iszero( and(gt(returndatasize(), 0x1f), staticcall(gas(), root, 0x1c, 0x04, 0x00, 0x20)) ) { returndatacopy(mload(0x40), 0x00, returndatasize()) revert(mload(0x40), returndatasize()) } result := mload(0x00) } } /// @dev Returns the number of NFT tokens owned by `owner` from the base DN404 contract. /// /// Requirements: /// - `owner` must not be the zero address. function balanceOf(address owner) public view virtual returns (uint256 result) { address root = rootERC20(); /// @solidity memory-safe-assembly assembly { mstore(0x00, 0xf5b100ea) // `balanceOfNFT(address)`. mstore(0x20, shr(96, shl(96, owner))) if iszero( and(gt(returndatasize(), 0x1f), staticcall(gas(), root, 0x1c, 0x24, 0x00, 0x20)) ) { returndatacopy(mload(0x40), 0x00, returndatasize()) revert(mload(0x40), returndatasize()) } result := mload(0x00) } } /// @dev Returns the owner of token `id` from the base DN404 contract. /// /// Requirements: /// - Token `id` must exist. function ownerOf(uint256 id) public view virtual returns (address result) { address root = rootERC20(); /// @solidity memory-safe-assembly assembly { mstore(0x00, 0x6352211e) // `ownerOf(uint256)`. mstore(0x20, id) if iszero( and(gt(returndatasize(), 0x1f), staticcall(gas(), root, 0x1c, 0x24, 0x00, 0x20)) ) { returndatacopy(mload(0x40), 0x00, returndatasize()) revert(mload(0x40), returndatasize()) } result := shr(96, shl(96, mload(0x00))) } } /// @dev Sets `spender` as the approved account to manage token `id` in the base DN404 contract. /// /// Requirements: /// - Token `id` must exist. /// - The caller must be the owner of the token, /// or an approved operator for the token owner. /// /// Emits an {Approval} event. function approve(address spender, uint256 id) public virtual { address root = rootERC20(); address owner; /// @solidity memory-safe-assembly assembly { let m := mload(0x40) mstore(0x00, 0xd10b6e0c) // `approveNFT(address,uint256,address)`. mstore(0x20, shr(96, shl(96, spender))) mstore(0x40, id) mstore(0x60, caller()) if iszero( and( gt(returndatasize(), 0x1f), call(gas(), root, callvalue(), 0x1c, 0x64, 0x00, 0x20) ) ) { returndatacopy(m, 0x00, returndatasize()) revert(m, returndatasize()) } mstore(0x40, m) // Restore the free memory pointer. mstore(0x60, 0) // Restore the zero pointer. owner := shr(96, shl(96, mload(0x00))) } emit Approval(owner, spender, id); } /// @dev Returns the account approved to manage token `id` from the base DN404 contract. /// /// Requirements: /// - Token `id` must exist. function getApproved(uint256 id) public view virtual returns (address result) { address root = rootERC20(); /// @solidity memory-safe-assembly assembly { mstore(0x00, 0x081812fc) // `getApproved(uint256)`. mstore(0x20, id) if iszero( and(gt(returndatasize(), 0x1f), staticcall(gas(), root, 0x1c, 0x24, 0x00, 0x20)) ) { returndatacopy(mload(0x40), 0x00, returndatasize()) revert(mload(0x40), returndatasize()) } result := shr(96, shl(96, mload(0x00))) } } /// @dev Sets whether `operator` is approved to manage the tokens of the caller in the base DN404 contract. /// /// Emits an {ApprovalForAll} event. function setApprovalForAll(address operator, bool approved) public virtual { address root = rootERC20(); /// @solidity memory-safe-assembly assembly { let m := mload(0x40) mstore(0x00, 0x813500fc) // `setApprovalForAll(address,bool,address)`. mstore(0x20, shr(96, shl(96, operator))) mstore(0x40, iszero(iszero(approved))) mstore(0x60, caller()) if iszero( and( and(eq(mload(0x00), 1), gt(returndatasize(), 0x1f)), call(gas(), root, callvalue(), 0x1c, 0x64, 0x00, 0x20) ) ) { returndatacopy(m, 0x00, returndatasize()) revert(m, returndatasize()) } mstore(0x40, m) // Restore the free memory pointer. mstore(0x60, 0) // Restore the zero pointer. } emit ApprovalForAll(msg.sender, operator, approved); } /// @dev Returns whether `operator` is approved to manage the tokens of `owner` from the base DN404 contract. function isApprovedForAll(address owner, address operator) public view virtual returns (bool result) { address root = rootERC20(); /// @solidity memory-safe-assembly assembly { let m := mload(0x40) mstore(0x00, 0xe985e9c5) // `isApprovedForAll(address,address)`. mstore(0x20, shr(96, shl(96, owner))) mstore(0x40, shr(96, shl(96, operator))) if iszero( and(gt(returndatasize(), 0x1f), staticcall(gas(), root, 0x1c, 0x44, 0x00, 0x20)) ) { returndatacopy(m, 0x00, returndatasize()) revert(m, returndatasize()) } mstore(0x40, m) // Restore the free memory pointer. result := iszero(iszero(mload(0x00))) } } /// @dev Transfers token `id` from `from` to `to`. /// /// Requirements: /// /// - Token `id` must exist. /// - `from` must be the owner of the token. /// - `to` cannot be the zero address. /// - The caller must be the owner of the token, or be approved to manage the token. /// /// Emits a {Transfer} event. function transferFrom(address from, address to, uint256 id) public virtual { address root = rootERC20(); /// @solidity memory-safe-assembly assembly { let m := mload(0x40) mstore(m, 0xe5eb36c8) // `transferFromNFT(address,address,uint256,address)`. mstore(add(m, 0x20), shr(96, shl(96, from))) mstore(add(m, 0x40), shr(96, shl(96, to))) mstore(add(m, 0x60), id) mstore(add(m, 0x80), caller()) if iszero( and( and(eq(mload(0x00), 1), gt(returndatasize(), 0x1f)), call(gas(), root, callvalue(), add(m, 0x1c), 0x84, 0x00, 0x20) ) ) { returndatacopy(m, 0x00, returndatasize()) revert(m, returndatasize()) } } emit Transfer(from, to, id); } /// @dev Equivalent to `safeTransferFrom(from, to, id, "")`. function safeTransferFrom(address from, address to, uint256 id) public payable virtual { transferFrom(from, to, id); if (_hasCode(to)) _checkOnERC721Received(from, to, id, ""); } /// @dev Transfers token `id` from `from` to `to`. /// /// Requirements: /// /// - Token `id` must exist. /// - `from` must be the owner of the token. /// - `to` cannot be the zero address. /// - The caller must be the owner of the token, or be approved to manage the token. /// - If `to` refers to a smart contract, it must implement /// {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. /// /// Emits a {Transfer} event. function safeTransferFrom(address from, address to, uint256 id, bytes calldata data) public virtual { transferFrom(from, to, id); if (_hasCode(to)) _checkOnERC721Received(from, to, id, data); } /// @dev Returns true if this contract implements the interface defined by `interfaceId`. /// See: https://eips.ethereum.org/EIPS/eip-165 /// This function call must use less than 30000 gas. function supportsInterface(bytes4 interfaceId) public view virtual returns (bool result) { /// @solidity memory-safe-assembly assembly { let s := shr(224, interfaceId) // ERC165: 0x01ffc9a7, ERC721: 0x80ac58cd, ERC721Metadata: 0x5b5e139f. result := or(or(eq(s, 0x01ffc9a7), eq(s, 0x80ac58cd)), eq(s, 0x5b5e139f)) } } /// @dev Returns if `a` has bytecode of non-zero length. function _hasCode(address a) private view returns (bool result) { /// @solidity memory-safe-assembly assembly { result := extcodesize(a) // Can handle dirty upper bits. } } /// @dev Perform a call to invoke {IERC721Receiver-onERC721Received} on `to`. /// Reverts if the target does not support the function correctly. function _checkOnERC721Received(address from, address to, uint256 id, bytes memory data) private { /// @solidity memory-safe-assembly assembly { // Prepare the calldata. let m := mload(0x40) let onERC721ReceivedSelector := 0x150b7a02 mstore(m, onERC721ReceivedSelector) mstore(add(m, 0x20), caller()) // The `operator`, which is always `msg.sender`. mstore(add(m, 0x40), shr(96, shl(96, from))) mstore(add(m, 0x60), id) mstore(add(m, 0x80), 0x80) let n := mload(data) mstore(add(m, 0xa0), n) if n { pop(staticcall(gas(), 4, add(data, 0x20), n, add(m, 0xc0), n)) } // Revert if the call reverts. if iszero(call(gas(), to, 0, add(m, 0x1c), add(n, 0xa4), m, 0x20)) { if returndatasize() { // Bubble up the revert if the call reverts. returndatacopy(m, 0x00, returndatasize()) revert(m, returndatasize()) } } // Load the returndata and compare it. if iszero(eq(mload(m), shl(224, onERC721ReceivedSelector))) { mstore(0x00, 0xd1a57ed6) // `TransferToNonERC721ReceiverImplementer()`. revert(0x1c, 0x04) } } } /*«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-*/ /* MIRROR OPERATIONS */ /*-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»*/ /// @dev Returns the address of the base DN404 contract. function rootERC20() public view returns (address root) { root = _getDN404NFTStorage().rootERC20; if (root == address(0)) revert NotLinked(); } /// @dev Fallback modifier to execute calls from the base DN404 contract. modifier dn404NFTFallback() virtual { DN404NFTStorage storage $ = _getDN404NFTStorage(); uint256 fnSelector = _calldataload(0x00) >> 224; // `logTransfer(uint256[])`. if (fnSelector == 0x263c69d6) { if (msg.sender != $.rootERC20) revert Unauthorized(); /// @solidity memory-safe-assembly assembly { // When returndatacopy copies 1 or more out-of-bounds bytes, it reverts. returndatacopy(0x00, returndatasize(), lt(calldatasize(), 0x20)) let o := add(0x24, calldataload(0x04)) // Packed logs offset. returndatacopy(0x00, returndatasize(), lt(calldatasize(), o)) let end := add(o, shl(5, calldataload(sub(o, 0x20)))) returndatacopy(0x00, returndatasize(), lt(calldatasize(), end)) for {} iszero(eq(o, end)) { o := add(0x20, o) } { let d := calldataload(o) // Entry in the packed logs. let a := shr(96, d) // The address. let b := and(1, d) // Whether it is a burn. log4( codesize(), 0x00, _TRANSFER_EVENT_SIGNATURE, mul(a, b), mul(a, iszero(b)), shr(168, shl(160, d)) ) } mstore(0x00, 0x01) return(0x00, 0x20) } } // `linkMirrorContract(address)`. if (fnSelector == 0x0f4599e5) { if ($.deployer != address(0)) { if (address(uint160(_calldataload(0x04))) != $.deployer) { revert Unauthorized(); } } if ($.rootERC20 != address(0)) revert AlreadyLinked(); $.rootERC20 = msg.sender; /// @solidity memory-safe-assembly assembly { mstore(0x00, 0x01) return(0x00, 0x20) } } _; } /// @dev Fallback function for calls from base DN404 contract. fallback() external payable virtual dn404NFTFallback {} receive() external payable virtual {} /// @dev Returns the calldata value at `offset`. function _calldataload(uint256 offset) private pure returns (uint256 value) { /// @solidity memory-safe-assembly assembly { value := calldataload(offset) } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"deployer","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AlreadyLinked","type":"error"},{"inputs":[],"name":"CannotLink","type":"error"},{"inputs":[],"name":"NotLinked","type":"error"},{"inputs":[],"name":"TransferToNonERC721ReceiverImplementer","type":"error"},{"inputs":[],"name":"Unauthorized","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"Transfer","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"result","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"result","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"result","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"result","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"result","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rootERC20","outputs":[{"internalType":"address","name":"root","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"result","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"result","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"result","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"result","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405234801561000f575f80fd5b50604051610cc8380380610cc883398101604081905261002e91610072565b7fe8cb618a1de8ad2a6a7b358523c369cb09f40cc15da64205134c7e55c6a8670180546001600160a01b0319166001600160a01b039290921691909117905561009f565b5f60208284031215610082575f80fd5b81516001600160a01b0381168114610098575f80fd5b9392505050565b610c1c806100ac5f395ff3fe6080604052600436106100eb575f3560e01c806342842e0e11610089578063a22cb46511610058578063a22cb465146103ea578063b88d4fde14610409578063c87b56dd14610428578063e985e9c514610447576100f2565b806342842e0e146103855780636352211e1461039857806370a08231146103b757806395d89b41146103d6576100f2565b8063095ea7b3116100c5578063095ea7b31461031157806318160ddd1461033057806323b872dd146103525780633d36e5e914610371576100f2565b806301ffc9a71461026857806306fdde03146102b9578063081812fc146102da576100f2565b366100f257005b7fe8cb618a1de8ad2a6a7b358523c369cb09f40cc15da64205134c7e55c6a867005f3560e01c63263c69d68190036101cd5781546001600160a01b0316331461014d576040516282b42960e81b815260040160405180910390fd5b602036103d5f3e6004356024018036103d5f3e602081033560051b81018036103d5f3e5b8082146101c25781358060601c816001168260a01b60a81c811583028284027fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f38a4505050816020019150610171565b505060015f5260205ff35b80630f4599e5036102665760018201546001600160a01b0316156102225760018201546001600160a01b03166004356001600160a01b031614610222576040516282b42960e81b815260040160405180910390fd5b81546001600160a01b03161561024b57604051635fb2b52360e11b815260040160405180910390fd5b81546001600160a01b0319163317825560015f908152602090f35b005b348015610273575f80fd5b506102a46102823660046109c3565b6301ffc9a760e09190911c9081146380ac58cd821417635b5e139f9091141790565b60405190151581526020015b60405180910390f35b3480156102c4575f80fd5b506102cd610466565b6040516102b091906109f1565b3480156102e5575f80fd5b506102f96102f4366004610a3d565b6104bb565b6040516001600160a01b0390911681526020016102b0565b34801561031c575f80fd5b5061026661032b366004610a6f565b610503565b34801561033b575f80fd5b50610344610593565b6040519081526020016102b0565b34801561035d575f80fd5b5061026661036c366004610a97565b6105cc565b34801561037c575f80fd5b506102f9610671565b610266610393366004610a97565b6106bd565b3480156103a3575f80fd5b506102f96103b2366004610a3d565b6106ee565b3480156103c2575f80fd5b506103446103d1366004610ad0565b610724565b3480156103e1575f80fd5b506102cd610769565b3480156103f5575f80fd5b50610266610404366004610ae9565b610799565b348015610414575f80fd5b50610266610423366004610b22565b61082f565b348015610433575f80fd5b506102cd610442366004610a3d565b610889565b348015610452575f80fd5b506102a4610461366004610bb5565b6108e6565b60605f610471610671565b905060405191506306fdde0382525f806004601c8501845afa610496573d5f833e3d82fd5b60205f803e60205f51833e815160205f5101602084013e815160208301016040525090565b5f806104c5610671565b905063081812fc5f528260205260205f6024601c845afa601f3d11166104f1573d5f6040513e3d604051fd5b50505f516001600160a01b0316919050565b5f61050c610671565b90505f60405163d10b6e0c5f528460601b60601c602052836040523360605260205f6064601c34875af1601f3d1116610547573d5f823e3d81fd5b60408190525f606081905280516001600160a01b03908116935085929087169184917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259190a450505050565b5f8061059d610671565b905063e2c792815f5260205f6004601c845afa601f3d11166105c5573d5f6040513e3d604051fd5b50505f5190565b5f6105d5610671565b905060405163e5eb36c881528460601b60601c60208201528360601b60601c604082015282606082015233608082015260205f6084601c840134865af1601f3d1160015f51141616610629573d5f823e3d81fd5b5081836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a450505050565b7fe8cb618a1de8ad2a6a7b358523c369cb09f40cc15da64205134c7e55c6a86700546001600160a01b0316806106ba57604051632d9523d760e11b815260040160405180910390fd5b90565b6106c88383836105cc565b813b156106e9576106e983838360405180602001604052805f81525061093a565b505050565b5f806106f8610671565b9050636352211e5f528260205260205f6024601c845afa601f3d11166104f1573d5f6040513e3d604051fd5b5f8061072e610671565b905063f5b100ea5f528260601b60601c60205260205f6024601c845afa601f3d1116610760573d5f6040513e3d604051fd5b50505f51919050565b60605f610774610671565b905060405191506395d89b4182525f806004601c8501845afa610496573d5f833e3d82fd5b5f6107a2610671565b905060405163813500fc5f528360601b60601c6020528215156040523360605260205f6064601c34865af1601f3d1160015f511416166107e4573d5f823e3d81fd5b60408181525f6060528315158252516001600160a01b0385169133917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c319181900360200190a3505050565b61083a8585856105cc565b833b156108825761088285858585858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061093a92505050565b5050505050565b60605f610894610671565b9050604051915063c87b56dd82528260208301525f806024601c8501845afa6108bf573d5f833e3d82fd5b60205f803e60205f51833e815160205f5101602084013e8151602083010160405250919050565b5f806108f0610671565b905060405163e985e9c55f528460601b60601c6020528360601b60601c60405260205f6044601c855afa601f3d111661092b573d5f823e3d81fd5b60405250505f51151592915050565b60405163150b7a028082523360208301528560601b60601c604083015283606083015260808083015282518060a08401528015610981578060c08401826020870160045afa505b60208360a48301601c86015f8a5af16109a2573d156109a2573d5f843e3d83fd5b508060e01b8251146109bb5763d1a57ed65f526004601cfd5b505050505050565b5f602082840312156109d3575f80fd5b81356001600160e01b0319811681146109ea575f80fd5b9392505050565b5f602080835283518060208501525f5b81811015610a1d57858101830151858201604001528201610a01565b505f604082860101526040601f19601f8301168501019250505092915050565b5f60208284031215610a4d575f80fd5b5035919050565b80356001600160a01b0381168114610a6a575f80fd5b919050565b5f8060408385031215610a80575f80fd5b610a8983610a54565b946020939093013593505050565b5f805f60608486031215610aa9575f80fd5b610ab284610a54565b9250610ac060208501610a54565b9150604084013590509250925092565b5f60208284031215610ae0575f80fd5b6109ea82610a54565b5f8060408385031215610afa575f80fd5b610b0383610a54565b915060208301358015158114610b17575f80fd5b809150509250929050565b5f805f805f60808688031215610b36575f80fd5b610b3f86610a54565b9450610b4d60208701610a54565b935060408601359250606086013567ffffffffffffffff80821115610b70575f80fd5b818801915088601f830112610b83575f80fd5b813581811115610b91575f80fd5b896020828501011115610ba2575f80fd5b9699959850939650602001949392505050565b5f8060408385031215610bc6575f80fd5b610bcf83610a54565b9150610bdd60208401610a54565b9050925092905056fea2646970667358221220de6d43c7d0f6d9f4e4f8311547d3637d54f93fdbbbfdfd19a162672f6777093b64736f6c63430008180033000000000000000000000000baa168f8f58d656b1fe38c30b037777bca1c3094
Deployed Bytecode
0x6080604052600436106100eb575f3560e01c806342842e0e11610089578063a22cb46511610058578063a22cb465146103ea578063b88d4fde14610409578063c87b56dd14610428578063e985e9c514610447576100f2565b806342842e0e146103855780636352211e1461039857806370a08231146103b757806395d89b41146103d6576100f2565b8063095ea7b3116100c5578063095ea7b31461031157806318160ddd1461033057806323b872dd146103525780633d36e5e914610371576100f2565b806301ffc9a71461026857806306fdde03146102b9578063081812fc146102da576100f2565b366100f257005b7fe8cb618a1de8ad2a6a7b358523c369cb09f40cc15da64205134c7e55c6a867005f3560e01c63263c69d68190036101cd5781546001600160a01b0316331461014d576040516282b42960e81b815260040160405180910390fd5b602036103d5f3e6004356024018036103d5f3e602081033560051b81018036103d5f3e5b8082146101c25781358060601c816001168260a01b60a81c811583028284027fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f38a4505050816020019150610171565b505060015f5260205ff35b80630f4599e5036102665760018201546001600160a01b0316156102225760018201546001600160a01b03166004356001600160a01b031614610222576040516282b42960e81b815260040160405180910390fd5b81546001600160a01b03161561024b57604051635fb2b52360e11b815260040160405180910390fd5b81546001600160a01b0319163317825560015f908152602090f35b005b348015610273575f80fd5b506102a46102823660046109c3565b6301ffc9a760e09190911c9081146380ac58cd821417635b5e139f9091141790565b60405190151581526020015b60405180910390f35b3480156102c4575f80fd5b506102cd610466565b6040516102b091906109f1565b3480156102e5575f80fd5b506102f96102f4366004610a3d565b6104bb565b6040516001600160a01b0390911681526020016102b0565b34801561031c575f80fd5b5061026661032b366004610a6f565b610503565b34801561033b575f80fd5b50610344610593565b6040519081526020016102b0565b34801561035d575f80fd5b5061026661036c366004610a97565b6105cc565b34801561037c575f80fd5b506102f9610671565b610266610393366004610a97565b6106bd565b3480156103a3575f80fd5b506102f96103b2366004610a3d565b6106ee565b3480156103c2575f80fd5b506103446103d1366004610ad0565b610724565b3480156103e1575f80fd5b506102cd610769565b3480156103f5575f80fd5b50610266610404366004610ae9565b610799565b348015610414575f80fd5b50610266610423366004610b22565b61082f565b348015610433575f80fd5b506102cd610442366004610a3d565b610889565b348015610452575f80fd5b506102a4610461366004610bb5565b6108e6565b60605f610471610671565b905060405191506306fdde0382525f806004601c8501845afa610496573d5f833e3d82fd5b60205f803e60205f51833e815160205f5101602084013e815160208301016040525090565b5f806104c5610671565b905063081812fc5f528260205260205f6024601c845afa601f3d11166104f1573d5f6040513e3d604051fd5b50505f516001600160a01b0316919050565b5f61050c610671565b90505f60405163d10b6e0c5f528460601b60601c602052836040523360605260205f6064601c34875af1601f3d1116610547573d5f823e3d81fd5b60408190525f606081905280516001600160a01b03908116935085929087169184917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259190a450505050565b5f8061059d610671565b905063e2c792815f5260205f6004601c845afa601f3d11166105c5573d5f6040513e3d604051fd5b50505f5190565b5f6105d5610671565b905060405163e5eb36c881528460601b60601c60208201528360601b60601c604082015282606082015233608082015260205f6084601c840134865af1601f3d1160015f51141616610629573d5f823e3d81fd5b5081836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a450505050565b7fe8cb618a1de8ad2a6a7b358523c369cb09f40cc15da64205134c7e55c6a86700546001600160a01b0316806106ba57604051632d9523d760e11b815260040160405180910390fd5b90565b6106c88383836105cc565b813b156106e9576106e983838360405180602001604052805f81525061093a565b505050565b5f806106f8610671565b9050636352211e5f528260205260205f6024601c845afa601f3d11166104f1573d5f6040513e3d604051fd5b5f8061072e610671565b905063f5b100ea5f528260601b60601c60205260205f6024601c845afa601f3d1116610760573d5f6040513e3d604051fd5b50505f51919050565b60605f610774610671565b905060405191506395d89b4182525f806004601c8501845afa610496573d5f833e3d82fd5b5f6107a2610671565b905060405163813500fc5f528360601b60601c6020528215156040523360605260205f6064601c34865af1601f3d1160015f511416166107e4573d5f823e3d81fd5b60408181525f6060528315158252516001600160a01b0385169133917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c319181900360200190a3505050565b61083a8585856105cc565b833b156108825761088285858585858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061093a92505050565b5050505050565b60605f610894610671565b9050604051915063c87b56dd82528260208301525f806024601c8501845afa6108bf573d5f833e3d82fd5b60205f803e60205f51833e815160205f5101602084013e8151602083010160405250919050565b5f806108f0610671565b905060405163e985e9c55f528460601b60601c6020528360601b60601c60405260205f6044601c855afa601f3d111661092b573d5f823e3d81fd5b60405250505f51151592915050565b60405163150b7a028082523360208301528560601b60601c604083015283606083015260808083015282518060a08401528015610981578060c08401826020870160045afa505b60208360a48301601c86015f8a5af16109a2573d156109a2573d5f843e3d83fd5b508060e01b8251146109bb5763d1a57ed65f526004601cfd5b505050505050565b5f602082840312156109d3575f80fd5b81356001600160e01b0319811681146109ea575f80fd5b9392505050565b5f602080835283518060208501525f5b81811015610a1d57858101830151858201604001528201610a01565b505f604082860101526040601f19601f8301168501019250505092915050565b5f60208284031215610a4d575f80fd5b5035919050565b80356001600160a01b0381168114610a6a575f80fd5b919050565b5f8060408385031215610a80575f80fd5b610a8983610a54565b946020939093013593505050565b5f805f60608486031215610aa9575f80fd5b610ab284610a54565b9250610ac060208501610a54565b9150604084013590509250925092565b5f60208284031215610ae0575f80fd5b6109ea82610a54565b5f8060408385031215610afa575f80fd5b610b0383610a54565b915060208301358015158114610b17575f80fd5b809150509250929050565b5f805f805f60808688031215610b36575f80fd5b610b3f86610a54565b9450610b4d60208701610a54565b935060408601359250606086013567ffffffffffffffff80821115610b70575f80fd5b818801915088601f830112610b83575f80fd5b813581811115610b91575f80fd5b896020828501011115610ba2575f80fd5b9699959850939650602001949392505050565b5f8060408385031215610bc6575f80fd5b610bcf83610a54565b9150610bdd60208401610a54565b9050925092905056fea2646970667358221220de6d43c7d0f6d9f4e4f8311547d3637d54f93fdbbbfdfd19a162672f6777093b64736f6c63430008180033
Deployed Bytecode Sourcemap
506:20403:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3101:66;18395:25;20868:20;18501:3;18478:26;18573:10;18559:24;;;18555:1332;;18618:11;;-1:-1:-1;;;;;18618:11:0;18604:10;:25;18600:52;;18638:14;;-1:-1:-1;;;18638:14:0;;;;;;;;;;;18600:52;18891:4;18875:14;18872:24;18854:16;18848:4;18833:64;18947:4;18934:18;18928:4;18924:29;19052:1;19036:14;19033:21;19015:16;19009:4;18994:61;19118:4;19115:1;19111:12;19098:26;19095:1;19091:34;19088:1;19084:42;19202:3;19186:14;19183:23;19165:16;19159:4;19144:63;19227:562;19247:3;19244:1;19241:10;19227:562;;19320:1;19307:15;19390:1;19386:2;19382:10;19446:1;19443;19439:9;19744:1;19739:3;19735:11;19730:3;19726:21;19696:1;19689:9;19686:1;19682:17;19653:1;19650;19646:9;19594:25;19563:4;19526:10;19495:275;;;;19270:1;19264:4;19260:12;19255:17;;19227:562;;;19231:2;;19820:4;19814;19807:18;19856:4;19850;19843:18;18555:1332;19944:10;19958;19944:24;19940:507;;19989:10;;;;-1:-1:-1;;;;;19989:10:0;:24;19985:185;;20079:10;;;;-1:-1:-1;;;;;20079:10:0;20068:4;20868:20;-1:-1:-1;;;;;20038:51:0;;20034:121;;20121:14;;-1:-1:-1;;;20121:14:0;;;;;;;;;;;20034:121;20188:11;;-1:-1:-1;;;;;20188:11:0;:25;20184:53;;20222:15;;-1:-1:-1;;;20222:15:0;;;;;;;;;;;20184:53;20252:24;;-1:-1:-1;;;;;;20252:24:0;20266:10;20252:24;;;;:11;20367:18;;;20416:4;;20403:18;19940:507;18384:2082;15516:387;;;;;;;;;;-1:-1:-1;15516:387:0;;;;;:::i;:::-;15834:10;15697:3;15693:21;;;;15828:17;;;15853:10;15847:17;;15825:40;15873:10;15867:17;;;15822:63;;15516:387;;;;470:14:1;;463:22;445:41;;433:2;418:18;15516:387:0;;;;;;;;4035:743;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;10225:624::-;;;;;;;;;;-1:-1:-1;10225:624:0;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;1399:32:1;;;1381:51;;1369:2;1354:18;10225:624:0;1235:203:1;9074:983:0;;;;;;;;;;-1:-1:-1;9074:983:0;;;;;:::i;:::-;;:::i;6611:554::-;;;;;;;;;;;;;:::i;:::-;;;2026:25:1;;;2014:2;1999:18;6611:554:0;1880:177:1;13355:912:0;;;;;;;;;;-1:-1:-1;13355:912:0;;;;;:::i;:::-;;:::i;18095:166::-;;;;;;;;;;;;;:::i;14341:203::-;;;;;;:::i;:::-;;:::i;8127:616::-;;;;;;;;;;-1:-1:-1;8127:616:0;;;;;:::i;:::-;;:::i;7348:629::-;;;;;;;;;;-1:-1:-1;7348:629:0;;;;;:::i;:::-;;:::i;4866:747::-;;;;;;;;;;;;;:::i;11021:991::-;;;;;;;;;;-1:-1:-1;11021:991:0;;;;;:::i;:::-;;:::i;15061:241::-;;;;;;;;;;-1:-1:-1;15061:241:0;;;;;:::i;:::-;;:::i;5726:804::-;;;;;;;;;;-1:-1:-1;5726:804:0;;;;;:::i;:::-;;:::i;12135:853::-;;;;;;;;;;-1:-1:-1;12135:853:0;;;;;:::i;:::-;;:::i;4035:743::-;4080:20;4113:12;4128:11;:9;:11::i;:::-;4113:26;;4234:4;4228:11;4218:21;;4268:10;4260:6;4253:26;4371:4;4365;4359;4352;4344:6;4340:17;4334:4;4327:5;4316:60;4306:202;;4426:16;4420:4;4412:6;4397:46;4476:16;4468:6;4461:32;4306:202;4549:4;4543;4537;4522:32;4604:4;4597;4591:11;4583:6;4568:41;4687:6;4681:13;4674:4;4667;4661:11;4657:22;4650:4;4642:6;4638:17;4623:72;4751:6;4745:13;4738:4;4730:6;4726:17;4722:37;4716:4;4709:51;4203:568;4035:743;:::o;10225:624::-;10287:14;10314:12;10329:11;:9;:11::i;:::-;10314:26;;10432:10;10426:4;10419:24;10497:2;10491:4;10484:16;10616:4;10610;10604;10598;10592;10585:5;10574:47;10567:4;10549:16;10546:26;10542:80;10514:264;;10691:16;10685:4;10678;10672:11;10657:51;10746:16;10739:4;10733:11;10726:37;10514:264;-1:-1:-1;;10824:4:0;10818:11;-1:-1:-1;;;;;10802:29:0;;10225:624;-1:-1:-1;10225:624:0:o;9074:983::-;9146:12;9161:11;:9;:11::i;:::-;9146:26;;9183:13;9290:4;9284:11;9322:10;9316:4;9309:24;9418:7;9414:2;9410:16;9406:2;9402:25;9396:4;9389:39;9455:2;9449:4;9442:16;9485:8;9479:4;9472:22;9660:4;9654;9648;9642;9629:11;9623:4;9616:5;9611:54;9583:4;9565:16;9562:26;9536:148;9508:312;;9743:16;9737:4;9734:1;9719:41;9788:16;9785:1;9778:27;9508:312;9841:4;9834:15;;;9912:1;9906:4;9899:15;;;9982:11;;-1:-1:-1;;;;;9966:29:0;;;;-1:-1:-1;10046:2:0;;10021:28;;;;9966:29;;10021:28;;9912:1;10021:28;9135:922;;9074:983;;:::o;6611:554::-;6655:14;6682:12;6697:11;:9;:11::i;:::-;6682:26;;6800:10;6794:4;6787:24;6950:4;6944;6938;6932;6926;6919:5;6908:47;6901:4;6883:16;6880:26;6876:80;6848:264;;7025:16;7019:4;7012;7006:11;6991:51;7080:16;7073:4;7067:11;7060:37;6848:264;-1:-1:-1;;7142:4:0;7136:11;;6611:554::o;13355:912::-;13441:12;13456:11;:9;:11::i;:::-;13441:26;;13561:4;13555:11;13590:10;13587:1;13580:21;13707:4;13703:2;13699:13;13695:2;13691:22;13684:4;13681:1;13677:12;13670:44;13765:2;13761;13757:11;13753:2;13749:20;13742:4;13739:1;13735:12;13728:42;13805:2;13798:4;13795:1;13791:12;13784:24;13843:8;13836:4;13833:1;13829:12;13822:30;14051:4;14045;14039;14032;14029:1;14025:12;14012:11;14006:4;13999:5;13994:62;13965:4;13947:16;13944:26;13940:1;13933:4;13927:11;13924:18;13920:51;13894:181;13866:345;;14134:16;14128:4;14125:1;14110:41;14179:16;14176:1;14169:27;13866:345;;14256:2;14252;-1:-1:-1;;;;;14237:22:0;14246:4;-1:-1:-1;;;;;14237:22:0;;;;;;;;;;;13430:837;13355:912;;;:::o;18095:166::-;3101:66;18169:31;-1:-1:-1;;;;;18169:31:0;;18211:42;;18242:11;;-1:-1:-1;;;18242:11:0;;;;;;;;;;;18211:42;18095:166;:::o;14341:203::-;14439:26;14452:4;14458:2;14462;14439:12;:26::i;:::-;16126:14;;14478:58;;;14496:40;14519:4;14525:2;14529;14496:40;;;;;;;;;;;;:22;:40::i;:::-;14341:203;;;:::o;8127:616::-;8185:14;8212:12;8227:11;:9;:11::i;:::-;8212:26;;8330:10;8324:4;8317:24;8391:2;8385:4;8378:16;8510:4;8504;8498;8492;8486;8479:5;8468:47;8461:4;8443:16;8440:26;8436:80;8408:264;;8585:16;8579:4;8572;8566:11;8551:51;8640:16;8633:4;8627:11;8620:37;7348:629;7411:14;7438:12;7453:11;:9;:11::i;:::-;7438:26;;7556:10;7550:4;7543:24;7638:5;7634:2;7630:14;7626:2;7622:23;7616:4;7609:37;7762:4;7756;7750;7744;7738;7731:5;7720:47;7713:4;7695:16;7692:26;7688:80;7660:264;;7837:16;7831:4;7824;7818:11;7803:51;7892:16;7885:4;7879:11;7872:37;7660:264;-1:-1:-1;;7954:4:0;7948:11;;7348:629;-1:-1:-1;7348:629:0:o;4866:747::-;4913:20;4946:12;4961:11;:9;:11::i;:::-;4946:26;;5067:4;5061:11;5051:21;;5101:10;5093:6;5086:26;5206:4;5200;5194;5187;5179:6;5175:17;5169:4;5162:5;5151:60;5141:202;;5261:16;5255:4;5247:6;5232:46;5311:16;5303:6;5296:32;11021:991;11107:12;11122:11;:9;:11::i;:::-;11107:26;;11227:4;11221:11;11259:10;11253:4;11246:24;11359:8;11355:2;11351:17;11347:2;11343:26;11337:4;11330:40;11411:8;11404:16;11397:24;11391:4;11384:38;11449:8;11443:4;11436:22;11649:4;11643;11637;11631;11618:11;11612:4;11605:5;11600:54;11571:4;11553:16;11550:26;11546:1;11539:4;11533:11;11530:18;11526:51;11500:173;11472:337;;11732:16;11726:4;11723:1;11708:41;11777:16;11774:1;11767:27;11472:337;11830:4;11823:15;;;11901:1;11895:4;11888:15;470:14:1;;463:22;445:41;;11958:46:0;-1:-1:-1;;;;;11958:46:0;;;11973:10;;11958:46;;;;;433:2:1;11958:46:0;;;11096:916;11021:991;;:::o;15061:241::-;15195:26;15208:4;15214:2;15218;15195:12;:26::i;:::-;16126:14;;15234:60;;;15252:42;15275:4;15281:2;15285;15289:4;;15252:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15252:22:0;;-1:-1:-1;;;15252:42:0:i;:::-;15061:241;;;;;:::o;5726:804::-;5785:20;5818:12;5833:11;:9;:11::i;:::-;5818:26;;5939:4;5933:11;5923:21;;5973:10;5965:6;5958:26;6041:2;6034:4;6026:6;6022:17;6015:29;6123:4;6117;6111;6104;6096:6;6092:17;6086:4;6079:5;6068:60;6058:202;;6178:16;6172:4;6164:6;6149:46;6228:16;6220:6;6213:32;6058:202;6301:4;6295;6289;6274:32;6356:4;6349;6343:11;6335:6;6320:41;6439:6;6433:13;6426:4;6419;6413:11;6409:22;6402:4;6394:6;6390:17;6375:72;6503:6;6497:13;6490:4;6482:6;6478:17;6474:37;6468:4;6461:51;5908:615;5726:804;;;:::o;12135:853::-;12259:11;12288:12;12303:11;:9;:11::i;:::-;12288:26;;12408:4;12402:11;12440:10;12434:4;12427:24;12534:5;12530:2;12526:14;12522:2;12518:23;12512:4;12505:37;12585:8;12581:2;12577:17;12573:2;12569:26;12563:4;12556:40;12712:4;12706;12700;12694;12688;12681:5;12670:47;12663:4;12645:16;12642:26;12638:80;12610:244;;12777:16;12771:4;12768:1;12753:41;12822:16;12819:1;12812:27;12610:244;12875:4;12868:15;-1:-1:-1;;12963:4:0;12957:11;12950:19;12943:27;;12135:853;-1:-1:-1;;12135:853:0:o;16353:1400::-;16596:4;16590:11;16647:10;16681:24;16678:1;16671:35;16741:8;16734:4;16731:1;16727:12;16720:30;16850:4;16846:2;16842:13;16838:2;16834:22;16827:4;16824:1;16820:12;16813:44;16892:2;16885:4;16882:1;16878:12;16871:24;16930:4;16923;16920:1;16916:12;16909:26;16964:4;16958:11;17004:1;16997:4;16994:1;16990:12;16983:23;17023:1;17020:71;;;17086:1;17079:4;17076:1;17072:12;17069:1;17062:4;17056;17052:15;17049:1;17042:5;17031:57;17027:62;17020:71;17209:4;17206:1;17199:4;17196:1;17192:12;17185:4;17182:1;17178:12;17175:1;17171:2;17164:5;17159:55;17149:319;;17238:16;17235:218;;;17368:16;17362:4;17359:1;17344:41;17417:16;17414:1;17407:27;17235:218;17149:319;17566:24;17561:3;17557:34;17553:1;17547:8;17544:48;17534:201;;17626:10;17620:4;17613:24;17715:4;17709;17702:18;17534:201;;;16353:1400;;;;:::o;14:286:1:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:1;;209:43;;199:71;;266:1;263;256:12;199:71;289:5;14:286;-1:-1:-1;;;14:286:1:o;497:548::-;609:4;638:2;667;656:9;649:21;699:6;693:13;742:6;737:2;726:9;722:18;715:34;767:1;777:140;791:6;788:1;785:13;777:140;;;886:14;;;882:23;;876:30;852:17;;;871:2;848:26;841:66;806:10;;777:140;;;781:3;966:1;961:2;952:6;941:9;937:22;933:31;926:42;1036:2;1029;1025:7;1020:2;1012:6;1008:15;1004:29;993:9;989:45;985:54;977:62;;;;497:548;;;;:::o;1050:180::-;1109:6;1162:2;1150:9;1141:7;1137:23;1133:32;1130:52;;;1178:1;1175;1168:12;1130:52;-1:-1:-1;1201:23:1;;1050:180;-1:-1:-1;1050:180:1:o;1443:173::-;1511:20;;-1:-1:-1;;;;;1560:31:1;;1550:42;;1540:70;;1606:1;1603;1596:12;1540:70;1443:173;;;:::o;1621:254::-;1689:6;1697;1750:2;1738:9;1729:7;1725:23;1721:32;1718:52;;;1766:1;1763;1756:12;1718:52;1789:29;1808:9;1789:29;:::i;:::-;1779:39;1865:2;1850:18;;;;1837:32;;-1:-1:-1;;;1621:254:1:o;2062:328::-;2139:6;2147;2155;2208:2;2196:9;2187:7;2183:23;2179:32;2176:52;;;2224:1;2221;2214:12;2176:52;2247:29;2266:9;2247:29;:::i;:::-;2237:39;;2295:38;2329:2;2318:9;2314:18;2295:38;:::i;:::-;2285:48;;2380:2;2369:9;2365:18;2352:32;2342:42;;2062:328;;;;;:::o;2395:186::-;2454:6;2507:2;2495:9;2486:7;2482:23;2478:32;2475:52;;;2523:1;2520;2513:12;2475:52;2546:29;2565:9;2546:29;:::i;2586:347::-;2651:6;2659;2712:2;2700:9;2691:7;2687:23;2683:32;2680:52;;;2728:1;2725;2718:12;2680:52;2751:29;2770:9;2751:29;:::i;:::-;2741:39;;2830:2;2819:9;2815:18;2802:32;2877:5;2870:13;2863:21;2856:5;2853:32;2843:60;;2899:1;2896;2889:12;2843:60;2922:5;2912:15;;;2586:347;;;;;:::o;2938:808::-;3035:6;3043;3051;3059;3067;3120:3;3108:9;3099:7;3095:23;3091:33;3088:53;;;3137:1;3134;3127:12;3088:53;3160:29;3179:9;3160:29;:::i;:::-;3150:39;;3208:38;3242:2;3231:9;3227:18;3208:38;:::i;:::-;3198:48;;3293:2;3282:9;3278:18;3265:32;3255:42;;3348:2;3337:9;3333:18;3320:32;3371:18;3412:2;3404:6;3401:14;3398:34;;;3428:1;3425;3418:12;3398:34;3466:6;3455:9;3451:22;3441:32;;3511:7;3504:4;3500:2;3496:13;3492:27;3482:55;;3533:1;3530;3523:12;3482:55;3573:2;3560:16;3599:2;3591:6;3588:14;3585:34;;;3615:1;3612;3605:12;3585:34;3660:7;3655:2;3646:6;3642:2;3638:15;3634:24;3631:37;3628:57;;;3681:1;3678;3671:12;3628:57;2938:808;;;;-1:-1:-1;2938:808:1;;-1:-1:-1;3712:2:1;3704:11;;3734:6;2938:808;-1:-1:-1;;;2938:808:1:o;3751:260::-;3819:6;3827;3880:2;3868:9;3859:7;3855:23;3851:32;3848:52;;;3896:1;3893;3886:12;3848:52;3919:29;3938:9;3919:29;:::i;:::-;3909:39;;3967:38;4001:2;3990:9;3986:18;3967:38;:::i;:::-;3957:48;;3751:260;;;;;:::o
Swarm Source
ipfs://de6d43c7d0f6d9f4e4f8311547d3637d54f93fdbbbfdfd19a162672f6777093b
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.