/

    Token

    Chibbles (CHIB)

    Overview

    Max Total Supply

    1,000 CHIB

    Holders

    781

    Market

    Onchain Market Cap

    -

    Circulating Supply Market Cap

    -
    Balance
    1 CHIB
    0xAcCf339e9985Ee2984AeF6ba0b4605BEA3d3fd88
    Loading...
    Loading
    Loading...
    Loading
    Loading...
    Loading

    Click here to update the token information / general information

    Contract Source Code Verified (Exact Match)

    Contract Name:
    Chibbles

    Compiler Version
    v0.8.26+commit.8a97fa7a

    Optimization Enabled:
    Yes with 9999 runs

    Other Settings:
    paris EvmVersion
    File 1 of 22 : Chibbles.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: MIT
    /*
    /$$ /$$ /$$$$$$$ /$$$$$$ /$$ /$$ /$$ /$$ /$$ /$$$$$$ /$$$$$$$ /$$$$$$$
    | $$ /$$/| $$__ $$ /$$__ $$| $$ /$ | $$| $$$ | $$ | $$ /$$__ $$| $$__ $$ /$$__ $$
    | $$ /$$/ | $$ \ $$| $$ \ $$| $$ /$$$| $$| $$$$| $$ | $$ | $$ \ $$| $$ \ $$| $$ \__/
    | $$$$$/ | $$$$$$$/| $$ | $$| $$/$$ $$ $$| $$ $$ $$ | $$ | $$$$$$$$| $$$$$$$ | $$$$$$
    | $$ $$ | $$__ $$| $$ | $$| $$$$_ $$$$| $$ $$$$ | $$ | $$__ $$| $$__ $$ \____ $$
    | $$\ $$ | $$ \ $$| $$ | $$| $$$/ \ $$$| $$\ $$$ | $$ | $$ | $$| $$ \ $$ /$$ \ $$
    | $$ \ $$| $$ | $$| $$$$$$/| $$/ \ $$| $$ \ $$ | $$$$$$$$| $$ | $$| $$$$$$$/| $$$$$$/
    |__/ \__/|__/ |__/ \______/ |__/ \__/|__/ \__/ |________/|__/ |__/|_______/ \______/
    krownlabs.app
    x.com/krownlabs
    discord.gg/KTU4krfhrG
    */
    pragma solidity ^0.8.20;
    import "@openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol";
    import "@openzeppelin/contracts/access/Ownable.sol";
    import "@openzeppelin/contracts/utils/ReentrancyGuard.sol";
    import "@openzeppelin/contracts/utils/cryptography/MerkleProof.sol";
    import "@openzeppelin/contracts/utils/Strings.sol";
    import "@openzeppelin/contracts/interfaces/IERC2981.sol";
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 2 of 22 : Ownable.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: MIT
    // OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)
    pragma solidity ^0.8.20;
    import {Context} from "../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.
    *
    * The initial owner is set to the address provided by the deployer. 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;
    /**
    * @dev The caller account is not authorized to perform an operation.
    */
    error OwnableUnauthorizedAccount(address account);
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 3 of 22 : draft-IERC6093.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: MIT
    // OpenZeppelin Contracts (last updated v5.1.0) (interfaces/draft-IERC6093.sol)
    pragma solidity ^0.8.20;
    /**
    * @dev Standard ERC-20 Errors
    * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens.
    */
    interface IERC20Errors {
    /**
    * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.
    * @param sender Address whose tokens are being transferred.
    * @param balance Current balance for the interacting account.
    * @param needed Minimum amount required to perform a transfer.
    */
    error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);
    /**
    * @dev Indicates a failure with the token `sender`. Used in transfers.
    * @param sender Address whose tokens are being transferred.
    */
    error ERC20InvalidSender(address sender);
    /**
    * @dev Indicates a failure with the token `receiver`. Used in transfers.
    * @param receiver Address to which tokens are being transferred.
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 4 of 22 : IERC2981.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: MIT
    // OpenZeppelin Contracts (last updated v5.1.0) (interfaces/IERC2981.sol)
    pragma solidity ^0.8.20;
    import {IERC165} from "../utils/introspection/IERC165.sol";
    /**
    * @dev Interface for the NFT Royalty Standard.
    *
    * A standardized way to retrieve royalty payment information for non-fungible tokens (NFTs) to enable universal
    * support for royalty payments across all NFT marketplaces and ecosystem participants.
    */
    interface IERC2981 is IERC165 {
    /**
    * @dev Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of
    * exchange. The royalty amount is denominated and should be paid in that same unit of exchange.
    *
    * NOTE: ERC-2981 allows setting the royalty to 100% of the price. In that case all the price would be sent to the
    * royalty receiver and 0 tokens to the seller. Contracts dealing with royalty should consider empty transfers.
    */
    function royaltyInfo(
    uint256 tokenId,
    uint256 salePrice
    ) external view returns (address receiver, uint256 royaltyAmount);
    }
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 5 of 22 : ERC721.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: MIT
    // OpenZeppelin Contracts (last updated v5.1.0) (token/ERC721/ERC721.sol)
    pragma solidity ^0.8.20;
    import {IERC721} from "./IERC721.sol";
    import {IERC721Metadata} from "./extensions/IERC721Metadata.sol";
    import {ERC721Utils} from "./utils/ERC721Utils.sol";
    import {Context} from "../../utils/Context.sol";
    import {Strings} from "../../utils/Strings.sol";
    import {IERC165, ERC165} from "../../utils/introspection/ERC165.sol";
    import {IERC721Errors} from "../../interfaces/draft-IERC6093.sol";
    /**
    * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC-721] Non-Fungible Token Standard, including
    * the Metadata extension, but not including the Enumerable extension, which is available separately as
    * {ERC721Enumerable}.
    */
    abstract contract ERC721 is Context, ERC165, IERC721, IERC721Metadata, IERC721Errors {
    using Strings for uint256;
    // Token name
    string private _name;
    // Token symbol
    string private _symbol;
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 6 of 22 : ERC721Enumerable.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: MIT
    // OpenZeppelin Contracts (last updated v5.1.0) (token/ERC721/extensions/ERC721Enumerable.sol)
    pragma solidity ^0.8.20;
    import {ERC721} from "../ERC721.sol";
    import {IERC721Enumerable} from "./IERC721Enumerable.sol";
    import {IERC165} from "../../../utils/introspection/ERC165.sol";
    /**
    * @dev This implements an optional extension of {ERC721} defined in the ERC that adds enumerability
    * of all the token ids in the contract as well as all token ids owned by each account.
    *
    * CAUTION: {ERC721} extensions that implement custom `balanceOf` logic, such as {ERC721Consecutive},
    * interfere with enumerability and should not be used together with {ERC721Enumerable}.
    */
    abstract contract ERC721Enumerable is ERC721, IERC721Enumerable {
    mapping(address owner => mapping(uint256 index => uint256)) private _ownedTokens;
    mapping(uint256 tokenId => uint256) private _ownedTokensIndex;
    uint256[] private _allTokens;
    mapping(uint256 tokenId => uint256) private _allTokensIndex;
    /**
    * @dev An `owner`'s token query was out of bounds for `index`.
    *
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 7 of 22 : IERC721Enumerable.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: MIT
    // OpenZeppelin Contracts (last updated v5.0.0) (token/ERC721/extensions/IERC721Enumerable.sol)
    pragma solidity ^0.8.20;
    import {IERC721} from "../IERC721.sol";
    /**
    * @title ERC-721 Non-Fungible Token Standard, optional enumeration extension
    * @dev See https://eips.ethereum.org/EIPS/eip-721
    */
    interface IERC721Enumerable is IERC721 {
    /**
    * @dev Returns the total amount of tokens stored by the contract.
    */
    function totalSupply() external view returns (uint256);
    /**
    * @dev Returns a token ID owned by `owner` at a given `index` of its token list.
    * Use along with {balanceOf} to enumerate all of ``owner``'s tokens.
    */
    function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256);
    /**
    * @dev Returns a token ID at a given `index` of all the tokens stored by the contract.
    * Use along with {totalSupply} to enumerate all tokens.
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 8 of 22 : IERC721Metadata.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: MIT
    // OpenZeppelin Contracts (last updated v5.0.0) (token/ERC721/extensions/IERC721Metadata.sol)
    pragma solidity ^0.8.20;
    import {IERC721} from "../IERC721.sol";
    /**
    * @title ERC-721 Non-Fungible Token Standard, optional metadata extension
    * @dev See https://eips.ethereum.org/EIPS/eip-721
    */
    interface IERC721Metadata is IERC721 {
    /**
    * @dev Returns the token collection name.
    */
    function name() external view returns (string memory);
    /**
    * @dev Returns the token collection symbol.
    */
    function symbol() external view returns (string memory);
    /**
    * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.
    */
    function tokenURI(uint256 tokenId) external view returns (string memory);
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 9 of 22 : IERC721.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: MIT
    // OpenZeppelin Contracts (last updated v5.1.0) (token/ERC721/IERC721.sol)
    pragma solidity ^0.8.20;
    import {IERC165} from "../../utils/introspection/IERC165.sol";
    /**
    * @dev Required interface of an ERC-721 compliant contract.
    */
    interface IERC721 is IERC165 {
    /**
    * @dev Emitted when `tokenId` token is transferred from `from` to `to`.
    */
    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);
    /**
    * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.
    */
    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);
    /**
    * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.
    */
    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 10 of 22 : IERC721Receiver.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: MIT
    // OpenZeppelin Contracts (last updated v5.1.0) (token/ERC721/IERC721Receiver.sol)
    pragma solidity ^0.8.20;
    /**
    * @title ERC-721 token receiver interface
    * @dev Interface for any contract that wants to support safeTransfers
    * from ERC-721 asset contracts.
    */
    interface IERC721Receiver {
    /**
    * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}
    * by `operator` from `from`, this function is called.
    *
    * It must return its Solidity selector to confirm the token transfer.
    * If any other value is returned or the interface is not implemented by the recipient, the transfer will be
    * reverted.
    *
    * The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.
    */
    function onERC721Received(
    address operator,
    address from,
    uint256 tokenId,
    bytes calldata data
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 11 of 22 : ERC721Utils.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: MIT
    // OpenZeppelin Contracts (last updated v5.1.0) (token/ERC721/utils/ERC721Utils.sol)
    pragma solidity ^0.8.20;
    import {IERC721Receiver} from "../IERC721Receiver.sol";
    import {IERC721Errors} from "../../../interfaces/draft-IERC6093.sol";
    /**
    * @dev Library that provide common ERC-721 utility functions.
    *
    * See https://eips.ethereum.org/EIPS/eip-721[ERC-721].
    *
    * _Available since v5.1._
    */
    library ERC721Utils {
    /**
    * @dev Performs an acceptance check for the provided `operator` by calling {IERC721-onERC721Received}
    * on the `to` address. The `operator` is generally the address that initiated the token transfer (i.e. `msg.sender`).
    *
    * The acceptance call is not executed and treated as a no-op if the target address doesn't contain code (i.e. an EOA).
    * Otherwise, the recipient must implement {IERC721Receiver-onERC721Received} and return the acceptance magic value to accept
    * the transfer.
    */
    function checkOnERC721Received(
    address operator,
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 12 of 22 : Context.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: MIT
    // OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)
    pragma solidity ^0.8.20;
    /**
    * @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;
    }
    function _contextSuffixLength() internal view virtual returns (uint256) {
    return 0;
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 13 of 22 : Hashes.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: MIT
    // OpenZeppelin Contracts (last updated v5.1.0) (utils/cryptography/Hashes.sol)
    pragma solidity ^0.8.20;
    /**
    * @dev Library of standard hash functions.
    *
    * _Available since v5.1._
    */
    library Hashes {
    /**
    * @dev Commutative Keccak256 hash of a sorted pair of bytes32. Frequently used when working with merkle proofs.
    *
    * NOTE: Equivalent to the `standardNodeHash` in our https://github.com/OpenZeppelin/merkle-tree[JavaScript library].
    */
    function commutativeKeccak256(bytes32 a, bytes32 b) internal pure returns (bytes32) {
    return a < b ? _efficientKeccak256(a, b) : _efficientKeccak256(b, a);
    }
    /**
    * @dev Implementation of keccak256(abi.encode(a, b)) that doesn't allocate or expand memory.
    */
    function _efficientKeccak256(bytes32 a, bytes32 b) private pure returns (bytes32 value) {
    assembly ("memory-safe") {
    mstore(0x00, a)
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 14 of 22 : MerkleProof.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: MIT
    // OpenZeppelin Contracts (last updated v5.1.0) (utils/cryptography/MerkleProof.sol)
    // This file was procedurally generated from scripts/generate/templates/MerkleProof.js.
    pragma solidity ^0.8.20;
    import {Hashes} from "./Hashes.sol";
    /**
    * @dev These functions deal with verification of Merkle Tree proofs.
    *
    * The tree and the proofs can be generated using our
    * https://github.com/OpenZeppelin/merkle-tree[JavaScript library].
    * You will find a quickstart guide in the readme.
    *
    * 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.
    * OpenZeppelin's JavaScript library generates Merkle trees that are safe
    * against this attack out of the box.
    *
    * IMPORTANT: Consider memory side-effects when using custom hashing functions
    * that access memory in an unsafe way.
    *
    * NOTE: This library supports proof verification for merkle trees built using
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 15 of 22 : ERC165.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: MIT
    // OpenZeppelin Contracts (last updated v5.1.0) (utils/introspection/ERC165.sol)
    pragma solidity ^0.8.20;
    import {IERC165} from "./IERC165.sol";
    /**
    * @dev Implementation of the {IERC165} interface.
    *
    * Contracts that want to implement ERC-165 should inherit from this contract and override {supportsInterface} to check
    * for the additional interface id that will be supported. For example:
    *
    * ```solidity
    * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
    * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);
    * }
    * ```
    */
    abstract contract ERC165 is IERC165 {
    /**
    * @dev See {IERC165-supportsInterface}.
    */
    function supportsInterface(bytes4 interfaceId) public view virtual returns (bool) {
    return interfaceId == type(IERC165).interfaceId;
    }
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 16 of 22 : IERC165.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    // SPDX-License-Identifier: MIT
    // OpenZeppelin Contracts (last updated v5.1.0) (utils/introspection/IERC165.sol)
    pragma solidity ^0.8.20;
    /**
    * @dev Interface of the ERC-165 standard, as defined in the
    * https://eips.ethereum.org/EIPS/eip-165[ERC].
    *
    * Implementers can declare support of contract interfaces, which can then be
    * queried by others ({ERC165Checker}).
    *
    * For an implementation, see {ERC165}.
    */
    interface IERC165 {
    /**
    * @dev Returns true if this contract implements the interface defined by
    * `interfaceId`. See the corresponding
    * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section]
    * to learn more about how these ids are created.
    *
    * This function call must use less than 30 000 gas.
    */
    function supportsInterface(bytes4 interfaceId) external view returns (bool);
    }
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 17 of 22 : Math.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: MIT
    // OpenZeppelin Contracts (last updated v5.1.0) (utils/math/Math.sol)
    pragma solidity ^0.8.20;
    import {Panic} from "../Panic.sol";
    import {SafeCast} from "./SafeCast.sol";
    /**
    * @dev Standard math utilities missing in the Solidity language.
    */
    library Math {
    enum Rounding {
    Floor, // Toward negative infinity
    Ceil, // Toward positive infinity
    Trunc, // Toward zero
    Expand // Away from zero
    }
    /**
    * @dev Returns the addition of two unsigned integers, with an success flag (no overflow).
    */
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) {
    unchecked {
    uint256 c = a + b;
    if (c < a) return (false, 0);
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 18 of 22 : SafeCast.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: MIT
    // OpenZeppelin Contracts (last updated v5.1.0) (utils/math/SafeCast.sol)
    // This file was procedurally generated from scripts/generate/templates/SafeCast.js.
    pragma solidity ^0.8.20;
    /**
    * @dev Wrappers over Solidity's uintXX/intXX/bool casting operators with added overflow
    * checks.
    *
    * Downcasting from uint256/int256 in Solidity does not revert on overflow. This can
    * easily result in undesired exploitation or bugs, since developers usually
    * assume that overflows raise errors. `SafeCast` restores this intuition by
    * reverting the transaction when such an operation overflows.
    *
    * Using this library instead of the unchecked operations eliminates an entire
    * class of bugs, so it's recommended to use it always.
    */
    library SafeCast {
    /**
    * @dev Value doesn't fit in an uint of `bits` size.
    */
    error SafeCastOverflowedUintDowncast(uint8 bits, uint256 value);
    /**
    * @dev An int value doesn't fit in an uint of `bits` size.
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 19 of 22 : SignedMath.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: MIT
    // OpenZeppelin Contracts (last updated v5.1.0) (utils/math/SignedMath.sol)
    pragma solidity ^0.8.20;
    import {SafeCast} from "./SafeCast.sol";
    /**
    * @dev Standard signed math utilities missing in the Solidity language.
    */
    library SignedMath {
    /**
    * @dev Branchless ternary evaluation for `a ? b : c`. Gas costs are constant.
    *
    * IMPORTANT: This function may reduce bytecode size and consume less gas when used standalone.
    * However, the compiler may optimize Solidity ternary operations (i.e. `a ? b : c`) to only compute
    * one branch when needed, making this function more expensive.
    */
    function ternary(bool condition, int256 a, int256 b) internal pure returns (int256) {
    unchecked {
    // branchless ternary works because:
    // b ^ (a ^ b) == a
    // b ^ 0 == b
    return b ^ ((a ^ b) * int256(SafeCast.toUint(condition)));
    }
    }
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 20 of 22 : Panic.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: MIT
    // OpenZeppelin Contracts (last updated v5.1.0) (utils/Panic.sol)
    pragma solidity ^0.8.20;
    /**
    * @dev Helper library for emitting standardized panic codes.
    *
    * ```solidity
    * contract Example {
    * using Panic for uint256;
    *
    * // Use any of the declared internal constants
    * function foo() { Panic.GENERIC.panic(); }
    *
    * // Alternatively
    * function foo() { Panic.panic(Panic.GENERIC); }
    * }
    * ```
    *
    * Follows the list from https://github.com/ethereum/solidity/blob/v0.8.24/libsolutil/ErrorCodes.h[libsolutil].
    *
    * _Available since v5.1._
    */
    // slither-disable-next-line unused-state
    library Panic {
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 21 of 22 : ReentrancyGuard.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: MIT
    // OpenZeppelin Contracts (last updated v5.1.0) (utils/ReentrancyGuard.sol)
    pragma solidity ^0.8.20;
    /**
    * @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 EIP-1153 (transient storage) is available on the chain you're deploying at,
    * consider using {ReentrancyGuardTransient} instead.
    *
    * 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
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 22 of 22 : Strings.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: MIT
    // OpenZeppelin Contracts (last updated v5.1.0) (utils/Strings.sol)
    pragma solidity ^0.8.20;
    import {Math} from "./math/Math.sol";
    import {SignedMath} from "./math/SignedMath.sol";
    /**
    * @dev String operations.
    */
    library Strings {
    bytes16 private constant HEX_DIGITS = "0123456789abcdef";
    uint8 private constant ADDRESS_LENGTH = 20;
    /**
    * @dev The `value` string doesn't fit in the specified `length`.
    */
    error StringsInsufficientHexLength(uint256 value, uint256 length);
    /**
    * @dev Converts a `uint256` to its ASCII `string` decimal representation.
    */
    function toString(uint256 value) internal pure returns (string memory) {
    unchecked {
    uint256 length = Math.log10(value) + 1;
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    Settings
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    {
    "optimizer": {
    "enabled": true,
    "runs": 9999
    },
    "evmVersion": "paris",
    "outputSelection": {
    "*": {
    "*": [
    "evm.bytecode",
    "evm.deployedBytecode",
    "devdoc",
    "userdoc",
    "metadata",
    "abi"
    ]
    }
    },
    "libraries": {}
    }
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    Contract Security Audit

    Contract ABI

    [{"inputs":[{"internalType":"string","name":"uri","type":"string"},{"internalType":"bytes32","name":"merkleroot","type":"bytes32"},{"internalType":"address","name":"initialOwner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ERC721EnumerableForbiddenBatchMint","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"owner","type":"address"}],"name":"ERC721IncorrectOwner","type":"error"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ERC721InsufficientApproval","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC721InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"ERC721InvalidOperator","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"ERC721InvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC721InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC721InvalidSender","type":"error"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ERC721NonexistentToken","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"ERC721OutOfBoundsIndex","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"inputs":[],"name":"ReentrancyGuardReentrantCall","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","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":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TeamMint","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":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"TEAM_RESERVE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseExtension","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","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":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"notRevealedUri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"presaleM","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32[]","name":"_proof","type":"bytes32[]"}],"name":"presaleMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"publicM","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"publicSaleMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reveal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revealed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"root","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_salePrice","type":"uint256"}],"name":"royaltyInfo","outputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"royaltyAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","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":"string","name":"_newBaseExtension","type":"string"}],"name":"setBaseExtension","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_tokenBaseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"merkleroot","type":"bytes32"}],"name":"setMerkleRoot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_notRevealedURI","type":"string"}],"name":"setNotRevealedURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint96","name":"_royaltyFeeBps","type":"uint96"}],"name":"setRoyaltyInfo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"teamMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"teamMinted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"togglePause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"togglePresale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"togglePublicSale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"totalMinted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]

    6103e8600d556000600e5561010060405260416080818152906130f260a03960119061002b90826102b2565b50604080518082019091526005815264173539b7b760d91b602082015260129061005590826102b2565b506013805463ffffffff1916905534801561006f57600080fd5b5060405161313338038061313383398101604081905261008e9161038c565b806040518060400160405280600881526020016743686962626c657360c01b8152506040518060400160405280600481526020016321a424a160e11b81525081600090816100dc91906102b2565b5060016100e982826102b2565b5050506001600160a01b03811661011b57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b6101248161017a565b506001600b55600c829055610138836101cc565b601480546001600160a01b0319166001600160a01b0392909216919091179055505060138054600160201b600160801b0319166501f400000000179055610471565b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6101d46101e4565b60106101e082826102b2565b5050565b600a546001600160a01b031633146102115760405163118cdaa760e01b8152336004820152602401610112565b565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061023d57607f821691505b60208210810361025d57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156102ad57806000526020600020601f840160051c8101602085101561028a5750805b601f840160051c820191505b818110156102aa5760008155600101610296565b50505b505050565b81516001600160401b038111156102cb576102cb610213565b6102df816102d98454610229565b84610263565b6020601f82116001811461031357600083156102fb5750848201515b600019600385901b1c1916600184901b1784556102aa565b600084815260208120601f198516915b828110156103435787850151825560209485019460019092019101610323565b50848210156103615786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b80516001600160a01b038116811461038757600080fd5b919050565b6000806000606084860312156103a157600080fd5b83516001600160401b038111156103b757600080fd5b8401601f810186136103c857600080fd5b80516001600160401b038111156103e1576103e1610213565b604051601f8201601f19908116603f011681016001600160401b038111828210171561040f5761040f610213565b60405281815282820160200188101561042757600080fd5b60005b828110156104465760208185018101518383018201520161042a565b5060006020928201830152908601519094509250610468905060408501610370565b90509250925092565b612c72806104806000396000f3fe608060405234801561001057600080fd5b50600436106102fe5760003560e01c806370a082311161019c578063c87b56dd116100ee578063e8b5498d11610097578063edc0c72c11610071578063edc0c72c14610600578063f2c4ce1e14610613578063f2fde38b1461062657600080fd5b8063e8b5498d146105b2578063e985e9c5146105bb578063ebf0c717146105f757600080fd5b8063da3ef23f116100c8578063da3ef23f1461058f578063e222c7f9146105a2578063e5408eae146105aa57600080fd5b8063c87b56dd1461056b578063d2eb86ee1461057e578063d5abeb011461058657600080fd5b8063a22cb46511610150578063b88d4fde1161012a578063b88d4fde14610548578063c4ae31681461055b578063c66828621461056357600080fd5b8063a22cb46514610519578063a45063c01461052c578063a475b5dd1461054057600080fd5b80637cb64759116101815780637cb64759146104ed5780638da5cb5b1461050057806395d89b411461051157600080fd5b806370a08231146104d2578063715018a6146104e557600080fd5b80632f745c59116102555780634f6ccce7116102095780635c975abb116101e35780635c975abb146104aa5780636352211e146104b75780636c0360eb146104ca57600080fd5b80634f6ccce714610472578063518302271461048557806355f804b31461049757600080fd5b8063343937431161023a578063343937431461044f5780633ccfd60b1461045757806342842e0e1461045f57600080fd5b80632f745c59146104295780632fbba1151461043c57600080fd5b8063081c8c44116102b757806318160ddd1161029157806318160ddd146103dc57806323b872dd146103e45780632a55205a146103f757600080fd5b8063081c8c44146103ae578063095ea7b3146103b65780631798d58b146103c957600080fd5b806302fa7c47116102e857806302fa7c471461035957806306fdde031461036e578063081812fc1461038357600080fd5b80623d47901461030357806301ffc9a714610336575b600080fd5b610323610311366004612451565b60156020526000908152604090205481565b6040519081526020015b60405180910390f35b61034961034436600461249a565b610639565b604051901515815260200161032d565b61036c6103673660046124b7565b610695565b005b610376610783565b60405161032d919061256d565b610396610391366004612580565b610815565b6040516001600160a01b03909116815260200161032d565b61037661083e565b61036c6103c4366004612599565b6108cc565b6013546103499062010000900460ff1681565b600854610323565b61036c6103f23660046125c3565b6108db565b61040a610405366004612600565b610998565b604080516001600160a01b03909316835260208301919091520161032d565b610323610437366004612599565b610a49565b61036c61044a366004612580565b610ac7565b61036c610c60565b61036c610ca3565b61036c61046d3660046125c3565b610d60565b610323610480366004612580565b610d80565b60135461034990610100900460ff1681565b61036c6104a53660046126e9565b610df2565b6013546103499060ff1681565b6103966104c5366004612580565b610e06565b610376610e11565b6103236104e0366004612451565b610e1e565b61036c610e7f565b61036c6104fb366004612580565b610e93565b600a546001600160a01b0316610396565b610376610ea0565b61036c610527366004612732565b610eaf565b601354610349906301000000900460ff1681565b61036c610eba565b61036c610556366004612763565b610ef0565b61036c610f08565b610376610f42565b610376610579366004612580565b610f4f565b61036c6110b6565b610323600d5481565b61036c61059d3660046126e9565b61128d565b61036c6112a1565b610323600a81565b610323600e5481565b6103496105c93660046127df565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b610323600c5481565b61036c61060e366004612812565b6112e5565b61036c6106213660046126e9565b611596565b61036c610634366004612451565b6115aa565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f2a55205a00000000000000000000000000000000000000000000000000000000148061068f575061068f82611601565b92915050565b61069d611657565b6103e8816bffffffffffffffffffffffff1611156107025760405162461bcd60e51b815260206004820152601d60248201527f526f79616c7479206665652063616e6e6f74206578636565642031302500000060448201526064015b60405180910390fd5b601480546001600160a01b039093167fffffffffffffffffffffffff000000000000000000000000000000000000000090931692909217909155601380546bffffffffffffffffffffffff909216640100000000027fffffffffffffffffffffffffffffffff000000000000000000000000ffffffff909216919091179055565b60606000805461079290612889565b80601f01602080910402602001604051908101604052809291908181526020018280546107be90612889565b801561080b5780601f106107e05761010080835404028352916020019161080b565b820191906000526020600020905b8154815290600101906020018083116107ee57829003601f168201915b5050505050905090565b60006108208261169d565b506000828152600460205260409020546001600160a01b031661068f565b6011805461084b90612889565b80601f016020809104026020016040519081016040528092919081815260200182805461087790612889565b80156108c45780601f10610899576101008083540402835291602001916108c4565b820191906000526020600020905b8154815290600101906020018083116108a757829003601f168201915b505050505081565b6108d78282336116ef565b5050565b6001600160a01b03821661091e576040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600060048201526024016106f9565b600061092b8383336116fc565b9050836001600160a01b0316816001600160a01b031614610992576040517f64283d7b0000000000000000000000000000000000000000000000000000000081526001600160a01b03808616600483015260248201849052821660448201526064016106f9565b50505050565b60008281526002602052604081205481906001600160a01b03166109fe5760405162461bcd60e51b815260206004820152601460248201527f546f6b656e20646f6573206e6f7420657869737400000000000000000000000060448201526064016106f9565b6014546013546001600160a01b039091169061271090610a349064010000000090046bffffffffffffffffffffffff168661290b565b610a3e9190612922565b915091509250929050565b6000610a5483610e1e565b8210610a9e576040517fa57d13dc0000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602481018390526044016106f9565b506001600160a01b03919091166000908152600660209081526040808320938352929052205490565b610acf611657565b60008111610b1f5760405162461bcd60e51b815260206004820152601d60248201527f416d6f756e74206d7573742062652067726561746572207468616e203000000060448201526064016106f9565b600a81600e54610b2f919061295d565b1115610b7d5760405162461bcd60e51b815260206004820152601760248201527f45786365656473207465616d20616c6c6f636174696f6e00000000000000000060448201526064016106f9565b600d5481600f54610b8e919061295d565b1115610bdc5760405162461bcd60e51b815260206004820152601760248201527f576f756c6420657863656564206d617820737570706c7900000000000000000060448201526064016106f9565b60005b81811015610c1057600f8054906000610bf783612970565b9190505550610c0833600f546117d1565b600101610bdf565b5080600e6000828254610c23919061295d565b909155505060405181815233907f5d3a6b0dd9fbc17e3d7180bed2fcb7c0002bb1f4729b285322cacde3f136aefd9060200160405180910390a250565b610c68611657565b601380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff8116620100009182900460ff1615909102179055565b610cab611657565b476000610cc0600a546001600160a01b031690565b6001600160a01b03168260405160006040518083038185875af1925050503d8060008114610d0a576040519150601f19603f3d011682016040523d82523d6000602084013e610d0f565b606091505b50509050806108d75760405162461bcd60e51b815260206004820152600f60248201527f5472616e73666572206661696c6564000000000000000000000000000000000060448201526064016106f9565b610d7b83838360405180602001604052806000815250610ef0565b505050565b6000610d8b60085490565b8210610dcd576040517fa57d13dc00000000000000000000000000000000000000000000000000000000815260006004820152602481018390526044016106f9565b60088281548110610de057610de061298a565b90600052602060002001549050919050565b610dfa611657565b60106108d78282612a00565b600061068f8261169d565b6010805461084b90612889565b60006001600160a01b038216610e63576040517f89c62b64000000000000000000000000000000000000000000000000000000008152600060048201526024016106f9565b506001600160a01b031660009081526003602052604090205490565b610e87611657565b610e9160006117eb565b565b610e9b611657565b600c55565b60606001805461079290612889565b6108d7338383611855565b610ec2611657565b601380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055565b610efb8484846108db565b610992338585858561192b565b610f10611657565b601380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00811660ff90911615179055565b6012805461084b90612889565b6000818152600260205260409020546060906001600160a01b0316610fb65760405162461bcd60e51b815260206004820152601460248201527f546f6b656e20646f6573206e6f7420657869737400000000000000000000000060448201526064016106f9565b601354610100900460ff166110575760118054610fd290612889565b80601f0160208091040260200160405190810160405280929190818152602001828054610ffe90612889565b801561104b5780601f106110205761010080835404028352916020019161104b565b820191906000526020600020905b81548152906001019060200180831161102e57829003601f168201915b50505050509050919050565b6000611061611af0565b9050600081511161108157604051806020016040528060008152506110af565b8061108b84611aff565b601260405160200161109f93929190612add565b6040516020818303038152906040525b9392505050565b3332146111055760405162461bcd60e51b815260206004820152601260248201527f4e6f7420616c6c6f776564206f726967696e000000000000000000000000000060448201526064016106f9565b33600090815260156020526040902054156111625760405162461bcd60e51b815260206004820152601e60248201527f416c7265616479206d696e746564206d6178696d756d20616c6c6f776564000060448201526064016106f9565b6013546301000000900460ff166111bb5760405162461bcd60e51b815260206004820152601260248201527f5075626c69632073616c65206973204f4646000000000000000000000000000060448201526064016106f9565b60135460ff161561120e5760405162461bcd60e51b815260206004820152601260248201527f436f6e747261637420697320706175736564000000000000000000000000000060448201526064016106f9565b600e5461121c90600a612b9c565b600d546112299190612b9c565b600f5461123790600161295d565b11156112855760405162461bcd60e51b815260206004820152601360248201527f4d617820737570706c792065786365656465640000000000000000000000000060448201526064016106f9565b610e91611b9f565b611295611657565b60126108d78282612a00565b6112a9611657565b601380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff811663010000009182900460ff1615909102179055565b818161136f82828080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050600c546040517fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003360601b166020820152909250603401905060405160208183030381529060405280519060200120611bf9565b15156001146113c05760405162461bcd60e51b815260206004820152601260248201527f4e6f7420616c6c6f776564206f726967696e000000000000000000000000000060448201526064016106f9565b33321461140f5760405162461bcd60e51b815260206004820152601260248201527f4e6f7420616c6c6f776564206f726967696e000000000000000000000000000060448201526064016106f9565b336000908152601560205260409020541561146c5760405162461bcd60e51b815260206004820152601e60248201527f416c7265616479206d696e746564206d6178696d756d20616c6c6f776564000060448201526064016106f9565b60135462010000900460ff166114c45760405162461bcd60e51b815260206004820152600e60248201527f50726573616c65206973204f464600000000000000000000000000000000000060448201526064016106f9565b60135460ff16156115175760405162461bcd60e51b815260206004820152601260248201527f436f6e747261637420697320706175736564000000000000000000000000000060448201526064016106f9565b600e5461152590600a612b9c565b600d546115329190612b9c565b600f5461154090600161295d565b111561158e5760405162461bcd60e51b815260206004820152601360248201527f4d617820737570706c792065786365656465640000000000000000000000000060448201526064016106f9565b610992611b9f565b61159e611657565b60116108d78282612a00565b6115b2611657565b6001600160a01b0381166115f5576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024016106f9565b6115fe816117eb565b50565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f780e9d6300000000000000000000000000000000000000000000000000000000148061068f575061068f82611c0f565b600a546001600160a01b03163314610e91576040517f118cdaa70000000000000000000000000000000000000000000000000000000081523360048201526024016106f9565b6000818152600260205260408120546001600160a01b03168061068f576040517f7e273289000000000000000000000000000000000000000000000000000000008152600481018490526024016106f9565b610d7b8383836001611cf2565b60008061170a858585611e48565b90506001600160a01b0381166117675761176284600880546000838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b61178a565b846001600160a01b0316816001600160a01b03161461178a5761178a8185611f59565b6001600160a01b0385166117a6576117a184611fda565b6117c9565b846001600160a01b0316816001600160a01b0316146117c9576117c98585612089565b949350505050565b6108d78282604051806020016040528060008152506120d9565b600a80546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0382166118a0576040517f5b08ba180000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024016106f9565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b15611ae9576040517f150b7a020000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063150b7a0290611986908890889087908790600401612baf565b6020604051808303816000875af19250505080156119df575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526119dc91810190612bf0565b60015b611a61573d808015611a0d576040519150601f19603f3d011682016040523d82523d6000602084013e611a12565b606091505b508051600003611a59576040517f64a0ae920000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016106f9565b805181602001fd5b7fffffffff0000000000000000000000000000000000000000000000000000000081167f150b7a020000000000000000000000000000000000000000000000000000000014611ae7576040517f64a0ae920000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016106f9565b505b5050505050565b60606010805461079290612889565b60606000611b0c836120f1565b600101905060008167ffffffffffffffff811115611b2c57611b2c612622565b6040519080825280601f01601f191660200182016040528015611b56576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084611b6057509392505050565b611ba76121d3565b600f8054906000611bb783612970565b9091555050336000908152601560205260408120805460019290611bdc90849061295d565b92505081905550611bef33600f546117d1565b610e916001600b55565b600082611c068584612216565b14949350505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd000000000000000000000000000000000000000000000000000000001480611ca257507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061068f57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083161461068f565b8080611d0657506001600160a01b03821615155b15611e00576000611d168461169d565b90506001600160a01b03831615801590611d425750826001600160a01b0316816001600160a01b031614155b8015611d7457506001600160a01b0380821660009081526005602090815260408083209387168352929052205460ff16155b15611db6576040517fa9fbf51f0000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024016106f9565b8115611dfe5783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6000828152600260205260408120546001600160a01b0390811690831615611e7557611e75818486612259565b6001600160a01b03811615611eb357611e92600085600080611cf2565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b03851615611ee2576001600160a01b0385166000908152600360205260409020805460010190555b60008481526002602052604080822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b6000611f6483610e1e565b6000838152600760209081526040808320546001600160a01b0388168452600690925290912091925090818314611fbb57600083815260208281526040808320548584528184208190558352600790915290208290555b6000938452600760209081526040808620869055938552525081205550565b600854600090611fec90600190612b9c565b600083815260096020526040812054600880549394509092849081106120145761201461298a565b9060005260206000200154905080600883815481106120355761203561298a565b600091825260208083209091019290925582815260099091526040808220849055858252812055600880548061206d5761206d612c0d565b6001900381819060005260206000200160009055905550505050565b6000600161209684610e1e565b6120a09190612b9c565b6001600160a01b039093166000908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b6120e383836122ef565b610d7b33600085858561192b565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831061213a577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310612166576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061218457662386f26fc10000830492506010015b6305f5e100831061219c576305f5e100830492506008015b61271083106121b057612710830492506004015b606483106121c2576064830492506002015b600a831061068f5760010192915050565b6002600b540361220f576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600b55565b600081815b8451811015612251576122478286838151811061223a5761223a61298a565b6020026020010151612386565b915060010161221b565b509392505050565b6122648383836123b2565b610d7b576001600160a01b0383166122ab576040517f7e273289000000000000000000000000000000000000000000000000000000008152600481018290526024016106f9565b6040517f177e802f0000000000000000000000000000000000000000000000000000000081526001600160a01b0383166004820152602481018290526044016106f9565b6001600160a01b038216612332576040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600060048201526024016106f9565b6000612340838360006116fc565b90506001600160a01b03811615610d7b576040517f73c6ac6e000000000000000000000000000000000000000000000000000000008152600060048201526024016106f9565b60008183106123a25760008281526020849052604090206110af565b5060009182526020526040902090565b60006001600160a01b038316158015906117c95750826001600160a01b0316846001600160a01b0316148061240c57506001600160a01b0380851660009081526005602090815260408083209387168352929052205460ff165b806117c95750506000908152600460205260409020546001600160a01b03908116911614919050565b80356001600160a01b038116811461244c57600080fd5b919050565b60006020828403121561246357600080fd5b6110af82612435565b7fffffffff00000000000000000000000000000000000000000000000000000000811681146115fe57600080fd5b6000602082840312156124ac57600080fd5b81356110af8161246c565b600080604083850312156124ca57600080fd5b6124d383612435565b915060208301356bffffffffffffffffffffffff811681146124f457600080fd5b809150509250929050565b60005b8381101561251a578181015183820152602001612502565b50506000910152565b6000815180845261253b8160208601602086016124ff565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006110af6020830184612523565b60006020828403121561259257600080fd5b5035919050565b600080604083850312156125ac57600080fd5b6125b583612435565b946020939093013593505050565b6000806000606084860312156125d857600080fd5b6125e184612435565b92506125ef60208501612435565b929592945050506040919091013590565b6000806040838503121561261357600080fd5b50508035926020909101359150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008067ffffffffffffffff84111561266c5761266c612622565b506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85018116603f0116810181811067ffffffffffffffff821117156126b9576126b9612622565b6040528381529050808284018510156126d157600080fd5b83836020830137600060208583010152509392505050565b6000602082840312156126fb57600080fd5b813567ffffffffffffffff81111561271257600080fd5b8201601f8101841361272357600080fd5b6117c984823560208401612651565b6000806040838503121561274557600080fd5b61274e83612435565b9150602083013580151581146124f457600080fd5b6000806000806080858703121561277957600080fd5b61278285612435565b935061279060208601612435565b925060408501359150606085013567ffffffffffffffff8111156127b357600080fd5b8501601f810187136127c457600080fd5b6127d387823560208401612651565b91505092959194509250565b600080604083850312156127f257600080fd5b6127fb83612435565b915061280960208401612435565b90509250929050565b6000806020838503121561282557600080fd5b823567ffffffffffffffff81111561283c57600080fd5b8301601f8101851361284d57600080fd5b803567ffffffffffffffff81111561286457600080fd5b8560208260051b840101111561287957600080fd5b6020919091019590945092505050565b600181811c9082168061289d57607f821691505b6020821081036128d6577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808202811582820484141761068f5761068f6128dc565b600082612958577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b8082018082111561068f5761068f6128dc565b60006000198203612983576129836128dc565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b601f821115610d7b57806000526020600020601f840160051c810160208510156129e05750805b601f840160051c820191505b81811015611ae957600081556001016129ec565b815167ffffffffffffffff811115612a1a57612a1a612622565b612a2e81612a288454612889565b846129b9565b6020601f821160018114612a625760008315612a4a5750848201515b600019600385901b1c1916600184901b178455611ae9565b6000848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b82811015612ab05787850151825560209485019460019092019101612a90565b5084821015612ace5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b60008451612aef8184602089016124ff565b845190830190612b038183602089016124ff565b8454910190600090612b1481612889565b600182168015612b2b5760018114612b5e57612b8e565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0083168552811515820285019350612b8e565b87600052602060002060005b83811015612b8657815487820152600190910190602001612b6a565b505081850193505b509198975050505050505050565b8181038181111561068f5761068f6128dc565b6001600160a01b03851681526001600160a01b0384166020820152826040820152608060608201526000612be66080830184612523565b9695505050505050565b600060208284031215612c0257600080fd5b81516110af8161246c565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea26469706673582212203790564aca208f50bba0d865a9a5111172e76bbc871d5c03b8670e45b27a019664736f6c634300081a0033697066733a2f2f516d595575774c6f69526238776f58774a434373723167766272384532314b757852746d56426d6e4831745a7a372f68696464656e2e6a736f6e0000000000000000000000000000000000000000000000000000000000000060c60c249068b2dc84696edd370a733ad0e14b70dc99638be3ab7265a4d0f7543e000000000000000000000000c957215773a8b86c8d8bab235451e467caaf944c0000000000000000000000000000000000000000000000000000000000000043697066733a2f2f6261667962656968653777627a6e63756577657a64737273726771366f35336a3634346b6b7771773534793435656d6b746874346868797869776d2f0000000000000000000000000000000000000000000000000000000000

    Deployed Bytecode

    0x608060405234801561001057600080fd5b50600436106102fe5760003560e01c806370a082311161019c578063c87b56dd116100ee578063e8b5498d11610097578063edc0c72c11610071578063edc0c72c14610600578063f2c4ce1e14610613578063f2fde38b1461062657600080fd5b8063e8b5498d146105b2578063e985e9c5146105bb578063ebf0c717146105f757600080fd5b8063da3ef23f116100c8578063da3ef23f1461058f578063e222c7f9146105a2578063e5408eae146105aa57600080fd5b8063c87b56dd1461056b578063d2eb86ee1461057e578063d5abeb011461058657600080fd5b8063a22cb46511610150578063b88d4fde1161012a578063b88d4fde14610548578063c4ae31681461055b578063c66828621461056357600080fd5b8063a22cb46514610519578063a45063c01461052c578063a475b5dd1461054057600080fd5b80637cb64759116101815780637cb64759146104ed5780638da5cb5b1461050057806395d89b411461051157600080fd5b806370a08231146104d2578063715018a6146104e557600080fd5b80632f745c59116102555780634f6ccce7116102095780635c975abb116101e35780635c975abb146104aa5780636352211e146104b75780636c0360eb146104ca57600080fd5b80634f6ccce714610472578063518302271461048557806355f804b31461049757600080fd5b8063343937431161023a578063343937431461044f5780633ccfd60b1461045757806342842e0e1461045f57600080fd5b80632f745c59146104295780632fbba1151461043c57600080fd5b8063081c8c44116102b757806318160ddd1161029157806318160ddd146103dc57806323b872dd146103e45780632a55205a146103f757600080fd5b8063081c8c44146103ae578063095ea7b3146103b65780631798d58b146103c957600080fd5b806302fa7c47116102e857806302fa7c471461035957806306fdde031461036e578063081812fc1461038357600080fd5b80623d47901461030357806301ffc9a714610336575b600080fd5b610323610311366004612451565b60156020526000908152604090205481565b6040519081526020015b60405180910390f35b61034961034436600461249a565b610639565b604051901515815260200161032d565b61036c6103673660046124b7565b610695565b005b610376610783565b60405161032d919061256d565b610396610391366004612580565b610815565b6040516001600160a01b03909116815260200161032d565b61037661083e565b61036c6103c4366004612599565b6108cc565b6013546103499062010000900460ff1681565b600854610323565b61036c6103f23660046125c3565b6108db565b61040a610405366004612600565b610998565b604080516001600160a01b03909316835260208301919091520161032d565b610323610437366004612599565b610a49565b61036c61044a366004612580565b610ac7565b61036c610c60565b61036c610ca3565b61036c61046d3660046125c3565b610d60565b610323610480366004612580565b610d80565b60135461034990610100900460ff1681565b61036c6104a53660046126e9565b610df2565b6013546103499060ff1681565b6103966104c5366004612580565b610e06565b610376610e11565b6103236104e0366004612451565b610e1e565b61036c610e7f565b61036c6104fb366004612580565b610e93565b600a546001600160a01b0316610396565b610376610ea0565b61036c610527366004612732565b610eaf565b601354610349906301000000900460ff1681565b61036c610eba565b61036c610556366004612763565b610ef0565b61036c610f08565b610376610f42565b610376610579366004612580565b610f4f565b61036c6110b6565b610323600d5481565b61036c61059d3660046126e9565b61128d565b61036c6112a1565b610323600a81565b610323600e5481565b6103496105c93660046127df565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b610323600c5481565b61036c61060e366004612812565b6112e5565b61036c6106213660046126e9565b611596565b61036c610634366004612451565b6115aa565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f2a55205a00000000000000000000000000000000000000000000000000000000148061068f575061068f82611601565b92915050565b61069d611657565b6103e8816bffffffffffffffffffffffff1611156107025760405162461bcd60e51b815260206004820152601d60248201527f526f79616c7479206665652063616e6e6f74206578636565642031302500000060448201526064015b60405180910390fd5b601480546001600160a01b039093167fffffffffffffffffffffffff000000000000000000000000000000000000000090931692909217909155601380546bffffffffffffffffffffffff909216640100000000027fffffffffffffffffffffffffffffffff000000000000000000000000ffffffff909216919091179055565b60606000805461079290612889565b80601f01602080910402602001604051908101604052809291908181526020018280546107be90612889565b801561080b5780601f106107e05761010080835404028352916020019161080b565b820191906000526020600020905b8154815290600101906020018083116107ee57829003601f168201915b5050505050905090565b60006108208261169d565b506000828152600460205260409020546001600160a01b031661068f565b6011805461084b90612889565b80601f016020809104026020016040519081016040528092919081815260200182805461087790612889565b80156108c45780601f10610899576101008083540402835291602001916108c4565b820191906000526020600020905b8154815290600101906020018083116108a757829003601f168201915b505050505081565b6108d78282336116ef565b5050565b6001600160a01b03821661091e576040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600060048201526024016106f9565b600061092b8383336116fc565b9050836001600160a01b0316816001600160a01b031614610992576040517f64283d7b0000000000000000000000000000000000000000000000000000000081526001600160a01b03808616600483015260248201849052821660448201526064016106f9565b50505050565b60008281526002602052604081205481906001600160a01b03166109fe5760405162461bcd60e51b815260206004820152601460248201527f546f6b656e20646f6573206e6f7420657869737400000000000000000000000060448201526064016106f9565b6014546013546001600160a01b039091169061271090610a349064010000000090046bffffffffffffffffffffffff168661290b565b610a3e9190612922565b915091509250929050565b6000610a5483610e1e565b8210610a9e576040517fa57d13dc0000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602481018390526044016106f9565b506001600160a01b03919091166000908152600660209081526040808320938352929052205490565b610acf611657565b60008111610b1f5760405162461bcd60e51b815260206004820152601d60248201527f416d6f756e74206d7573742062652067726561746572207468616e203000000060448201526064016106f9565b600a81600e54610b2f919061295d565b1115610b7d5760405162461bcd60e51b815260206004820152601760248201527f45786365656473207465616d20616c6c6f636174696f6e00000000000000000060448201526064016106f9565b600d5481600f54610b8e919061295d565b1115610bdc5760405162461bcd60e51b815260206004820152601760248201527f576f756c6420657863656564206d617820737570706c7900000000000000000060448201526064016106f9565b60005b81811015610c1057600f8054906000610bf783612970565b9190505550610c0833600f546117d1565b600101610bdf565b5080600e6000828254610c23919061295d565b909155505060405181815233907f5d3a6b0dd9fbc17e3d7180bed2fcb7c0002bb1f4729b285322cacde3f136aefd9060200160405180910390a250565b610c68611657565b601380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff8116620100009182900460ff1615909102179055565b610cab611657565b476000610cc0600a546001600160a01b031690565b6001600160a01b03168260405160006040518083038185875af1925050503d8060008114610d0a576040519150601f19603f3d011682016040523d82523d6000602084013e610d0f565b606091505b50509050806108d75760405162461bcd60e51b815260206004820152600f60248201527f5472616e73666572206661696c6564000000000000000000000000000000000060448201526064016106f9565b610d7b83838360405180602001604052806000815250610ef0565b505050565b6000610d8b60085490565b8210610dcd576040517fa57d13dc00000000000000000000000000000000000000000000000000000000815260006004820152602481018390526044016106f9565b60088281548110610de057610de061298a565b90600052602060002001549050919050565b610dfa611657565b60106108d78282612a00565b600061068f8261169d565b6010805461084b90612889565b60006001600160a01b038216610e63576040517f89c62b64000000000000000000000000000000000000000000000000000000008152600060048201526024016106f9565b506001600160a01b031660009081526003602052604090205490565b610e87611657565b610e9160006117eb565b565b610e9b611657565b600c55565b60606001805461079290612889565b6108d7338383611855565b610ec2611657565b601380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055565b610efb8484846108db565b610992338585858561192b565b610f10611657565b601380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00811660ff90911615179055565b6012805461084b90612889565b6000818152600260205260409020546060906001600160a01b0316610fb65760405162461bcd60e51b815260206004820152601460248201527f546f6b656e20646f6573206e6f7420657869737400000000000000000000000060448201526064016106f9565b601354610100900460ff166110575760118054610fd290612889565b80601f0160208091040260200160405190810160405280929190818152602001828054610ffe90612889565b801561104b5780601f106110205761010080835404028352916020019161104b565b820191906000526020600020905b81548152906001019060200180831161102e57829003601f168201915b50505050509050919050565b6000611061611af0565b9050600081511161108157604051806020016040528060008152506110af565b8061108b84611aff565b601260405160200161109f93929190612add565b6040516020818303038152906040525b9392505050565b3332146111055760405162461bcd60e51b815260206004820152601260248201527f4e6f7420616c6c6f776564206f726967696e000000000000000000000000000060448201526064016106f9565b33600090815260156020526040902054156111625760405162461bcd60e51b815260206004820152601e60248201527f416c7265616479206d696e746564206d6178696d756d20616c6c6f776564000060448201526064016106f9565b6013546301000000900460ff166111bb5760405162461bcd60e51b815260206004820152601260248201527f5075626c69632073616c65206973204f4646000000000000000000000000000060448201526064016106f9565b60135460ff161561120e5760405162461bcd60e51b815260206004820152601260248201527f436f6e747261637420697320706175736564000000000000000000000000000060448201526064016106f9565b600e5461121c90600a612b9c565b600d546112299190612b9c565b600f5461123790600161295d565b11156112855760405162461bcd60e51b815260206004820152601360248201527f4d617820737570706c792065786365656465640000000000000000000000000060448201526064016106f9565b610e91611b9f565b611295611657565b60126108d78282612a00565b6112a9611657565b601380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff811663010000009182900460ff1615909102179055565b818161136f82828080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050600c546040517fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003360601b166020820152909250603401905060405160208183030381529060405280519060200120611bf9565b15156001146113c05760405162461bcd60e51b815260206004820152601260248201527f4e6f7420616c6c6f776564206f726967696e000000000000000000000000000060448201526064016106f9565b33321461140f5760405162461bcd60e51b815260206004820152601260248201527f4e6f7420616c6c6f776564206f726967696e000000000000000000000000000060448201526064016106f9565b336000908152601560205260409020541561146c5760405162461bcd60e51b815260206004820152601e60248201527f416c7265616479206d696e746564206d6178696d756d20616c6c6f776564000060448201526064016106f9565b60135462010000900460ff166114c45760405162461bcd60e51b815260206004820152600e60248201527f50726573616c65206973204f464600000000000000000000000000000000000060448201526064016106f9565b60135460ff16156115175760405162461bcd60e51b815260206004820152601260248201527f436f6e747261637420697320706175736564000000000000000000000000000060448201526064016106f9565b600e5461152590600a612b9c565b600d546115329190612b9c565b600f5461154090600161295d565b111561158e5760405162461bcd60e51b815260206004820152601360248201527f4d617820737570706c792065786365656465640000000000000000000000000060448201526064016106f9565b610992611b9f565b61159e611657565b60116108d78282612a00565b6115b2611657565b6001600160a01b0381166115f5576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024016106f9565b6115fe816117eb565b50565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f780e9d6300000000000000000000000000000000000000000000000000000000148061068f575061068f82611c0f565b600a546001600160a01b03163314610e91576040517f118cdaa70000000000000000000000000000000000000000000000000000000081523360048201526024016106f9565b6000818152600260205260408120546001600160a01b03168061068f576040517f7e273289000000000000000000000000000000000000000000000000000000008152600481018490526024016106f9565b610d7b8383836001611cf2565b60008061170a858585611e48565b90506001600160a01b0381166117675761176284600880546000838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b61178a565b846001600160a01b0316816001600160a01b03161461178a5761178a8185611f59565b6001600160a01b0385166117a6576117a184611fda565b6117c9565b846001600160a01b0316816001600160a01b0316146117c9576117c98585612089565b949350505050565b6108d78282604051806020016040528060008152506120d9565b600a80546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0382166118a0576040517f5b08ba180000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024016106f9565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b15611ae9576040517f150b7a020000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063150b7a0290611986908890889087908790600401612baf565b6020604051808303816000875af19250505080156119df575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526119dc91810190612bf0565b60015b611a61573d808015611a0d576040519150601f19603f3d011682016040523d82523d6000602084013e611a12565b606091505b508051600003611a59576040517f64a0ae920000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016106f9565b805181602001fd5b7fffffffff0000000000000000000000000000000000000000000000000000000081167f150b7a020000000000000000000000000000000000000000000000000000000014611ae7576040517f64a0ae920000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016106f9565b505b5050505050565b60606010805461079290612889565b60606000611b0c836120f1565b600101905060008167ffffffffffffffff811115611b2c57611b2c612622565b6040519080825280601f01601f191660200182016040528015611b56576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084611b6057509392505050565b611ba76121d3565b600f8054906000611bb783612970565b9091555050336000908152601560205260408120805460019290611bdc90849061295d565b92505081905550611bef33600f546117d1565b610e916001600b55565b600082611c068584612216565b14949350505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd000000000000000000000000000000000000000000000000000000001480611ca257507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061068f57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083161461068f565b8080611d0657506001600160a01b03821615155b15611e00576000611d168461169d565b90506001600160a01b03831615801590611d425750826001600160a01b0316816001600160a01b031614155b8015611d7457506001600160a01b0380821660009081526005602090815260408083209387168352929052205460ff16155b15611db6576040517fa9fbf51f0000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024016106f9565b8115611dfe5783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6000828152600260205260408120546001600160a01b0390811690831615611e7557611e75818486612259565b6001600160a01b03811615611eb357611e92600085600080611cf2565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b03851615611ee2576001600160a01b0385166000908152600360205260409020805460010190555b60008481526002602052604080822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b6000611f6483610e1e565b6000838152600760209081526040808320546001600160a01b0388168452600690925290912091925090818314611fbb57600083815260208281526040808320548584528184208190558352600790915290208290555b6000938452600760209081526040808620869055938552525081205550565b600854600090611fec90600190612b9c565b600083815260096020526040812054600880549394509092849081106120145761201461298a565b9060005260206000200154905080600883815481106120355761203561298a565b600091825260208083209091019290925582815260099091526040808220849055858252812055600880548061206d5761206d612c0d565b6001900381819060005260206000200160009055905550505050565b6000600161209684610e1e565b6120a09190612b9c565b6001600160a01b039093166000908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b6120e383836122ef565b610d7b33600085858561192b565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831061213a577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310612166576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061218457662386f26fc10000830492506010015b6305f5e100831061219c576305f5e100830492506008015b61271083106121b057612710830492506004015b606483106121c2576064830492506002015b600a831061068f5760010192915050565b6002600b540361220f576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600b55565b600081815b8451811015612251576122478286838151811061223a5761223a61298a565b6020026020010151612386565b915060010161221b565b509392505050565b6122648383836123b2565b610d7b576001600160a01b0383166122ab576040517f7e273289000000000000000000000000000000000000000000000000000000008152600481018290526024016106f9565b6040517f177e802f0000000000000000000000000000000000000000000000000000000081526001600160a01b0383166004820152602481018290526044016106f9565b6001600160a01b038216612332576040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600060048201526024016106f9565b6000612340838360006116fc565b90506001600160a01b03811615610d7b576040517f73c6ac6e000000000000000000000000000000000000000000000000000000008152600060048201526024016106f9565b60008183106123a25760008281526020849052604090206110af565b5060009182526020526040902090565b60006001600160a01b038316158015906117c95750826001600160a01b0316846001600160a01b0316148061240c57506001600160a01b0380851660009081526005602090815260408083209387168352929052205460ff165b806117c95750506000908152600460205260409020546001600160a01b03908116911614919050565b80356001600160a01b038116811461244c57600080fd5b919050565b60006020828403121561246357600080fd5b6110af82612435565b7fffffffff00000000000000000000000000000000000000000000000000000000811681146115fe57600080fd5b6000602082840312156124ac57600080fd5b81356110af8161246c565b600080604083850312156124ca57600080fd5b6124d383612435565b915060208301356bffffffffffffffffffffffff811681146124f457600080fd5b809150509250929050565b60005b8381101561251a578181015183820152602001612502565b50506000910152565b6000815180845261253b8160208601602086016124ff565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006110af6020830184612523565b60006020828403121561259257600080fd5b5035919050565b600080604083850312156125ac57600080fd5b6125b583612435565b946020939093013593505050565b6000806000606084860312156125d857600080fd5b6125e184612435565b92506125ef60208501612435565b929592945050506040919091013590565b6000806040838503121561261357600080fd5b50508035926020909101359150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008067ffffffffffffffff84111561266c5761266c612622565b506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85018116603f0116810181811067ffffffffffffffff821117156126b9576126b9612622565b6040528381529050808284018510156126d157600080fd5b83836020830137600060208583010152509392505050565b6000602082840312156126fb57600080fd5b813567ffffffffffffffff81111561271257600080fd5b8201601f8101841361272357600080fd5b6117c984823560208401612651565b6000806040838503121561274557600080fd5b61274e83612435565b9150602083013580151581146124f457600080fd5b6000806000806080858703121561277957600080fd5b61278285612435565b935061279060208601612435565b925060408501359150606085013567ffffffffffffffff8111156127b357600080fd5b8501601f810187136127c457600080fd5b6127d387823560208401612651565b91505092959194509250565b600080604083850312156127f257600080fd5b6127fb83612435565b915061280960208401612435565b90509250929050565b6000806020838503121561282557600080fd5b823567ffffffffffffffff81111561283c57600080fd5b8301601f8101851361284d57600080fd5b803567ffffffffffffffff81111561286457600080fd5b8560208260051b840101111561287957600080fd5b6020919091019590945092505050565b600181811c9082168061289d57607f821691505b6020821081036128d6577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808202811582820484141761068f5761068f6128dc565b600082612958577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b8082018082111561068f5761068f6128dc565b60006000198203612983576129836128dc565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b601f821115610d7b57806000526020600020601f840160051c810160208510156129e05750805b601f840160051c820191505b81811015611ae957600081556001016129ec565b815167ffffffffffffffff811115612a1a57612a1a612622565b612a2e81612a288454612889565b846129b9565b6020601f821160018114612a625760008315612a4a5750848201515b600019600385901b1c1916600184901b178455611ae9565b6000848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b82811015612ab05787850151825560209485019460019092019101612a90565b5084821015612ace5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b60008451612aef8184602089016124ff565b845190830190612b038183602089016124ff565b8454910190600090612b1481612889565b600182168015612b2b5760018114612b5e57612b8e565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0083168552811515820285019350612b8e565b87600052602060002060005b83811015612b8657815487820152600190910190602001612b6a565b505081850193505b509198975050505050505050565b8181038181111561068f5761068f6128dc565b6001600160a01b03851681526001600160a01b0384166020820152826040820152608060608201526000612be66080830184612523565b9695505050505050565b600060208284031215612c0257600080fd5b81516110af8161246c565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea26469706673582212203790564aca208f50bba0d865a9a5111172e76bbc871d5c03b8670e45b27a019664736f6c634300081a0033

    Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

    0000000000000000000000000000000000000000000000000000000000000060c60c249068b2dc84696edd370a733ad0e14b70dc99638be3ab7265a4d0f7543e000000000000000000000000c957215773a8b86c8d8bab235451e467caaf944c0000000000000000000000000000000000000000000000000000000000000043697066733a2f2f6261667962656968653777627a6e63756577657a64737273726771366f35336a3634346b6b7771773534793435656d6b746874346868797869776d2f0000000000000000000000000000000000000000000000000000000000

    -----Decoded View---------------
    Arg [0] : uri (string): ipfs://bafybeihe7wbzncuewezdsrsrgq6o53j644kkwqw54y45emktht4hhyxiwm/
    Arg [1] : merkleroot (bytes32): 0xc60c249068b2dc84696edd370a733ad0e14b70dc99638be3ab7265a4d0f7543e
    Arg [2] : initialOwner (address): 0xC957215773A8B86c8d8Bab235451E467caaf944C

    -----Encoded View---------------
    7 Constructor Arguments found :
    Arg [0] : 0000000000000000000000000000000000000000000000000000000000000060
    Arg [1] : c60c249068b2dc84696edd370a733ad0e14b70dc99638be3ab7265a4d0f7543e
    Arg [2] : 000000000000000000000000c957215773a8b86c8d8bab235451e467caaf944c
    Arg [3] : 0000000000000000000000000000000000000000000000000000000000000043
    Arg [4] : 697066733a2f2f6261667962656968653777627a6e63756577657a6473727372
    Arg [5] : 6771366f35336a3634346b6b7771773534793435656d6b746874346868797869
    Arg [6] : 776d2f0000000000000000000000000000000000000000000000000000000000


    [ 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.