ETH Price: $3,202.79 (+5.08%)

Token

Oddworx (ODDX)
 

Overview

Max Total Supply

1,000,336,807 ODDX

Holders

947

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
30 ODDX

Value
$0.00
0x635540C2BBf977d940bFb2C392BEf54b5449a313
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
Oddworx

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, GNU AGPLv3 license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-01-12
*/

// File @rari-capital/solmate/src/tokens/[email protected]

// SPDX-License-Identifier: AGPL-3.0-only
pragma solidity >=0.8.0;

/// @notice Modern and gas efficient ERC20 + EIP-2612 implementation.
/// @author Solmate (https://github.com/Rari-Capital/solmate/blob/main/src/tokens/ERC20.sol)
/// @author Modified from Uniswap (https://github.com/Uniswap/uniswap-v2-core/blob/master/contracts/UniswapV2ERC20.sol)
/// @dev Do not manually set balances without updating totalSupply, as the sum of all user balances must not exceed it.
abstract contract ERC20 {
    /*///////////////////////////////////////////////////////////////
                                  EVENTS
    //////////////////////////////////////////////////////////////*/

    event Transfer(address indexed from, address indexed to, uint256 amount);

    event Approval(address indexed owner, address indexed spender, uint256 amount);

    /*///////////////////////////////////////////////////////////////
                             METADATA STORAGE
    //////////////////////////////////////////////////////////////*/

    string public name;

    string public symbol;

    uint8 public immutable decimals;

    /*///////////////////////////////////////////////////////////////
                              ERC20 STORAGE
    //////////////////////////////////////////////////////////////*/

    uint256 public totalSupply;

    mapping(address => uint256) public balanceOf;

    mapping(address => mapping(address => uint256)) public allowance;

    /*///////////////////////////////////////////////////////////////
                             EIP-2612 STORAGE
    //////////////////////////////////////////////////////////////*/

    bytes32 public constant PERMIT_TYPEHASH =
        keccak256("Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)");

    uint256 internal immutable INITIAL_CHAIN_ID;

    bytes32 internal immutable INITIAL_DOMAIN_SEPARATOR;

    mapping(address => uint256) public nonces;

    /*///////////////////////////////////////////////////////////////
                               CONSTRUCTOR
    //////////////////////////////////////////////////////////////*/

    constructor(
        string memory _name,
        string memory _symbol,
        uint8 _decimals
    ) {
        name = _name;
        symbol = _symbol;
        decimals = _decimals;

        INITIAL_CHAIN_ID = block.chainid;
        INITIAL_DOMAIN_SEPARATOR = computeDomainSeparator();
    }

    /*///////////////////////////////////////////////////////////////
                              ERC20 LOGIC
    //////////////////////////////////////////////////////////////*/

    function approve(address spender, uint256 amount) public virtual returns (bool) {
        allowance[msg.sender][spender] = amount;

        emit Approval(msg.sender, spender, amount);

        return true;
    }

    function transfer(address to, uint256 amount) public virtual returns (bool) {
        balanceOf[msg.sender] -= amount;

        // Cannot overflow because the sum of all user
        // balances can't exceed the max uint256 value.
        unchecked {
            balanceOf[to] += amount;
        }

        emit Transfer(msg.sender, to, amount);

        return true;
    }

    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual returns (bool) {
        uint256 allowed = allowance[from][msg.sender]; // Saves gas for limited approvals.

        if (allowed != type(uint256).max) allowance[from][msg.sender] = allowed - amount;

        balanceOf[from] -= amount;

        // Cannot overflow because the sum of all user
        // balances can't exceed the max uint256 value.
        unchecked {
            balanceOf[to] += amount;
        }

        emit Transfer(from, to, amount);

        return true;
    }

    /*///////////////////////////////////////////////////////////////
                              EIP-2612 LOGIC
    //////////////////////////////////////////////////////////////*/

    function permit(
        address owner,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) public virtual {
        require(deadline >= block.timestamp, "PERMIT_DEADLINE_EXPIRED");

        // Unchecked because the only math done is incrementing
        // the owner's nonce which cannot realistically overflow.
        unchecked {
            bytes32 digest = keccak256(
                abi.encodePacked(
                    "\x19\x01",
                    DOMAIN_SEPARATOR(),
                    keccak256(abi.encode(PERMIT_TYPEHASH, owner, spender, value, nonces[owner]++, deadline))
                )
            );

            address recoveredAddress = ecrecover(digest, v, r, s);

            require(recoveredAddress != address(0) && recoveredAddress == owner, "INVALID_SIGNER");

            allowance[recoveredAddress][spender] = value;
        }

        emit Approval(owner, spender, value);
    }

    function DOMAIN_SEPARATOR() public view virtual returns (bytes32) {
        return block.chainid == INITIAL_CHAIN_ID ? INITIAL_DOMAIN_SEPARATOR : computeDomainSeparator();
    }

    function computeDomainSeparator() internal view virtual returns (bytes32) {
        return
            keccak256(
                abi.encode(
                    keccak256("EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"),
                    keccak256(bytes(name)),
                    keccak256("1"),
                    block.chainid,
                    address(this)
                )
            );
    }

    /*///////////////////////////////////////////////////////////////
                       INTERNAL MINT/BURN LOGIC
    //////////////////////////////////////////////////////////////*/

    function _mint(address to, uint256 amount) internal virtual {
        totalSupply += amount;

        // Cannot overflow because the sum of all user
        // balances can't exceed the max uint256 value.
        unchecked {
            balanceOf[to] += amount;
        }

        emit Transfer(address(0), to, amount);
    }

    function _burn(address from, uint256 amount) internal virtual {
        balanceOf[from] -= amount;

        // Cannot underflow because a user's balance
        // will never be larger than the total supply.
        unchecked {
            totalSupply -= amount;
        }

        emit Transfer(from, address(0), amount);
    }
}


// File contracts/IGenzee.sol


pragma solidity ^0.8.4;

interface IGenzee {
    function transferFrom(address from, address to, uint256 tokenId) external;
    function ownerOf(uint256 tokenId) external returns (address);
    function setApprovalForAll(address _operator, bool _approved) external;
    function isApprovedForAll(address _owner, address _operator) external returns (bool);
}


// File @openzeppelin/contracts/utils/[email protected]


// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

pragma solidity ^0.8.0;

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}


// File @openzeppelin/contracts/security/[email protected]


// OpenZeppelin Contracts v4.4.1 (security/Pausable.sol)

pragma solidity ^0.8.0;

/**
 * @dev Contract module which allows children to implement an emergency stop
 * mechanism that can be triggered by an authorized account.
 *
 * This module is used through inheritance. It will make available the
 * modifiers `whenNotPaused` and `whenPaused`, which can be applied to
 * the functions of your contract. Note that they will not be pausable by
 * simply including this module, only once the modifiers are put in place.
 */
abstract contract Pausable is Context {
    /**
     * @dev Emitted when the pause is triggered by `account`.
     */
    event Paused(address account);

    /**
     * @dev Emitted when the pause is lifted by `account`.
     */
    event Unpaused(address account);

    bool private _paused;

    /**
     * @dev Initializes the contract in unpaused state.
     */
    constructor() {
        _paused = false;
    }

    /**
     * @dev Returns true if the contract is paused, and false otherwise.
     */
    function paused() public view virtual returns (bool) {
        return _paused;
    }

    /**
     * @dev Modifier to make a function callable only when the contract is not paused.
     *
     * Requirements:
     *
     * - The contract must not be paused.
     */
    modifier whenNotPaused() {
        require(!paused(), "Pausable: paused");
        _;
    }

    /**
     * @dev Modifier to make a function callable only when the contract is paused.
     *
     * Requirements:
     *
     * - The contract must be paused.
     */
    modifier whenPaused() {
        require(paused(), "Pausable: not paused");
        _;
    }

    /**
     * @dev Triggers stopped state.
     *
     * Requirements:
     *
     * - The contract must not be paused.
     */
    function _pause() internal virtual whenNotPaused {
        _paused = true;
        emit Paused(_msgSender());
    }

    /**
     * @dev Returns to normal state.
     *
     * Requirements:
     *
     * - The contract must be paused.
     */
    function _unpause() internal virtual whenPaused {
        _paused = false;
        emit Unpaused(_msgSender());
    }
}


// File contracts/Oddworx.sol


pragma solidity ^0.8.4;



error NotOwnerOfToken();
error InvalidInput();
error NoTokensToClaim();
error NftHoldRewardsNotActive();
error NotAdmin();

/// @title Oddworx
/// @author Mytchall / Alephao
/// @notice General functions to mint, burn, reward NFT holders incl staking
contract Oddworx is ERC20, Pausable {

    IGenzee immutable public _genzeeContract;
    bool public nftHoldRewardsActive = true;
    uint256 public NFT_STAKING_WEEKLY_REWARD_AMOUNT = 20 * 10 ** 18; // Doesn't have to be public
    uint256 constant public NFT_HOLDING_WEEKLY_REWARD_AMOUNT = 10 * 10 ** 18;
    
    struct StakingData {
        address ownerAddress; // 160 bits
        uint96 timestamp; // 96 bits
    }

    mapping(address => bool) public adminAddresses;
    mapping(uint256 => StakingData) public stakedNft;
    mapping(uint256 => uint256) public latestUnstakedClaimTimestamp;
    
    constructor(address _nftContractAddress) ERC20("Oddworx", "ODDX", 18) {
        _mint(msg.sender, 1000000000 * 10 ** 18);
        _genzeeContract = IGenzee(_nftContractAddress);
        adminAddresses[msg.sender] = true;
    }

    /// @notice emitted when an item is purchased
    /// @param user address of the user that purchased an item
    /// @param itemSKU the SKU of the item purchased
    /// @param price the amount paid for the item
    event ItemPurchased(address indexed user, uint256 itemSKU, uint256 price);

    /// @notice emitted when a user stakes a token
    /// @param user address of the user that staked the Genzee
    /// @param genzee the id of the Genzee staked
    event StakedNft(address indexed user, uint256 indexed genzee);

    /// @notice emitted when a user unstakes a token
    /// @param user address of the user that unstaked the Genzee
    /// @param genzee the id of the Genzee unstaked
    /// @param amount the amount of ODDX claimed
    event UnstakedNft(address indexed user, uint256 indexed genzee, uint256 amount);

    /// @notice emitted when a user claim NFT rewards
    /// @param user address of the user that claimed ODDX
    /// @param genzee the id of the Genzee that generated the rewards
    /// @param amount the amount of ODDX claimed
    event UserClaimedNftRewards(address indexed user, uint256 indexed genzee, uint256 amount);

    modifier onlyAdmin() {
        if (adminAddresses[msg.sender]  != true) revert NotAdmin();
        _;
    }

    /*///////////////////////////////////////////////////////////////
                             General Functions
    //////////////////////////////////////////////////////////////*/
    function mint(address to, uint256 amount) public onlyAdmin {
        _mint(to, amount);
    }

    function burn(address _from, uint256 amount) public onlyAdmin {
        if (balanceOf[_from] < amount) revert InvalidInput();
        _burn(_from, amount);
    }

    function toggleAdminContract(address _adminAddress) public onlyAdmin {
         adminAddresses[_adminAddress] = !adminAddresses[_adminAddress];
    }

    function pause() public onlyAdmin {
        _pause();
    }

    function unpause() public onlyAdmin {
        _unpause();
    }

    /*///////////////////////////////////////////////////////////////
                             Shop features
    //////////////////////////////////////////////////////////////*/
    /// @notice Buy item in shop by burning Oddx.
    /// @param itemSKU A unique ID used to identify shop products.
    /// @param amount Amount of Oddx to burn.
    function buyItem(uint itemSKU, uint amount) public whenNotPaused {
        if (balanceOf[msg.sender] < amount) revert InvalidInput();
        _burn(msg.sender, amount);
        emit ItemPurchased(msg.sender, itemSKU, amount);
    }

    /*///////////////////////////////////////////////////////////////
                             NFT Staking Rewards
    //////////////////////////////////////////////////////////////*/
    /// @notice stake genzees in this contract. 
    /// The Genzee owners need to approve this contract for transfering
    /// before calling this function.
    /// @param genzeeIds list of genzee ids to stake.
    function stakeNfts(uint256[] calldata genzeeIds) external whenNotPaused {
        if (genzeeIds.length == 0) revert InvalidInput();
        uint256 genzeeId;
        for (uint256 i; i < genzeeIds.length; i++) {
            genzeeId = genzeeIds[i];
            // No need to check ownership since transferFrom already checks that
            // and the caller of this function should be the Genzee owner
            stakedNft[genzeeId] = StakingData(msg.sender, uint96(block.timestamp));
            _genzeeContract.transferFrom(msg.sender, address(this), genzeeId);
            emit StakedNft(msg.sender, genzeeId);
        }
    }

    /// @notice unstake genzees back to they rightful owners and pay them what it's owed in ODDX.
    /// @param genzeeIds list of genzee ids to unstake.
    function unstakeNfts(uint256[] calldata genzeeIds) external whenNotPaused {
        if (genzeeIds.length == 0) revert InvalidInput();

        // total rewards amount to claim (all genzees)
        uint256 totalRewards;

        // loop variables

        // rewards for current genzee in the loop below
        uint256 rewards;

        // current genzeeid in the loop below
        uint256 genzeeId;

        // staking information for the current genzee in the loop below
        StakingData memory stake;

        for (uint256 i; i < genzeeIds.length; i++) {
            genzeeId = genzeeIds[i];
            stake = stakedNft[genzeeId];

            if (stake.ownerAddress != msg.sender && stake.ownerAddress != address(0))  {
                revert NotOwnerOfToken();
            }

            rewards = _stakedRewardsForTimestamp(genzeeId);
            totalRewards += rewards;

            // Reset timestamp for unstaked rewards
            latestUnstakedClaimTimestamp[genzeeId] = block.timestamp;

            // No need to run safeTransferFrom because we're returning the NFT to
            // an address that was holding it before
            _genzeeContract.transferFrom(address(this), stake.ownerAddress, genzeeId);

            delete stakedNft[genzeeId];

            emit UnstakedNft(msg.sender, genzeeId, rewards);
        }

        if (totalRewards > 0) {
            _mint(msg.sender, totalRewards);
        }
    }

    /// @notice Claim Staked NFT rewards in ODDX. Also resets general holding
    /// timestamp so users can't double-claim for holding/staking.
    /// @param genzeeIds list of genzee ids to claim rewards for.
    function claimStakedNftRewards(uint256[] calldata genzeeIds) external whenNotPaused {
        if (genzeeIds.length == 0) revert InvalidInput();

        // total rewards amount to claim (all genzees)
        uint256 totalRewards;

        // loop variables

        // rewards for current genzee in the loop below
        uint256 rewards;

        // current genzeeid in the loop below
        uint256 genzeeId;

        // staking information for the current genzee in the loop below
        StakingData memory stake;

        for (uint256 i; i < genzeeIds.length; i++) {
            genzeeId = genzeeIds[i];
            stake = stakedNft[genzeeId];

            if (stake.ownerAddress != msg.sender) revert NotOwnerOfToken();

            rewards = _stakedRewardsForTimestamp(stake.timestamp);
            totalRewards += rewards;

            stakedNft[genzeeId].timestamp = uint96(block.timestamp);

            emit UserClaimedNftRewards(msg.sender, genzeeId, rewards);
        }

        if (totalRewards == 0) revert NoTokensToClaim();
        _mint(msg.sender, totalRewards);
    }

    /// @notice Calculate staking rewards owed per week.
    /// @param genzeeId NFT id to check.
    /// @return Returns amount of tokens available to claim
    function calculateStakedNftRewards(uint256 genzeeId) external view returns (uint256) {
        uint256 timestamp = stakedNft[genzeeId].timestamp;
        return _stakedRewardsForTimestamp(timestamp);
    }

    function _stakedRewardsForTimestamp(uint256 timestamp) private view returns (uint256) {
        return timestamp > 0
            ? NFT_STAKING_WEEKLY_REWARD_AMOUNT * ((block.timestamp - timestamp) / 1 weeks)
            : 0;
    }

    /// @notice Updates amount users are rewarded weekly.
    /// @param newAmount new amount to use, supply number in wei.
    function updateNftStakedRewardAmount(uint256 newAmount) external onlyAdmin {
        NFT_STAKING_WEEKLY_REWARD_AMOUNT = newAmount;
    }


    /*///////////////////////////////////////////////////////////////
                             NFT Holding Rewards
    //////////////////////////////////////////////////////////////*/
    /// @notice Claim rewards for NFT if we are the holder. 
    /// Rewards are attached to the NFT, so if it's transferred, new owner can claim tokens
    /// But the intital rewards can't be reclaimed
    /// @param genzeeIds list of genzee ids to stake.
    function claimNftHoldRewards(uint256[] calldata genzeeIds) external whenNotPaused {
        if (!nftHoldRewardsActive) revert NftHoldRewardsNotActive();
        if (genzeeIds.length == 0) revert InvalidInput();

        // total rewards amount to claim (all genzees)
        uint256 totalRewards;

        // loop variables

        // rewards for current genzee in the loop below
        uint256 rewards;

        // current genzeeid in the loop below
        uint256 genzeeId;

        // last time owner claimed rewards for the genzee
        uint256 latestClaimTimestamp;

        for (uint256 i; i < genzeeIds.length; i++) {
            genzeeId = genzeeIds[i];
            if (_genzeeContract.ownerOf(genzeeId) != msg.sender) revert NotOwnerOfToken();
            latestClaimTimestamp = latestUnstakedClaimTimestamp[genzeeId];

            rewards = _unstakedRewardsForTimestamp(latestClaimTimestamp);
            totalRewards += rewards;

            // Set claim timestamp to now
            latestUnstakedClaimTimestamp[genzeeId] = block.timestamp;

            emit UserClaimedNftRewards(msg.sender, genzeeId, rewards);
        }

        if (totalRewards == 0) revert NoTokensToClaim();
        _mint(msg.sender, totalRewards);
    }

    function calculateNftHoldReward(uint256 _nftIndex) external view returns (uint256)  {
        uint256 timestamp = latestUnstakedClaimTimestamp[_nftIndex];
        return _unstakedRewardsForTimestamp(timestamp);
    }

    function _unstakedRewardsForTimestamp(uint256 timestamp) private view returns (uint256) {
        return (timestamp > 0)
            ? NFT_HOLDING_WEEKLY_REWARD_AMOUNT * ((block.timestamp - timestamp) / 1 weeks)
            : NFT_HOLDING_WEEKLY_REWARD_AMOUNT;
    }

    function toggleNftHoldRewards() external onlyAdmin {
        nftHoldRewardsActive = !nftHoldRewardsActive;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_nftContractAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"InvalidInput","type":"error"},{"inputs":[],"name":"NftHoldRewardsNotActive","type":"error"},{"inputs":[],"name":"NoTokensToClaim","type":"error"},{"inputs":[],"name":"NotAdmin","type":"error"},{"inputs":[],"name":"NotOwnerOfToken","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"itemSKU","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"price","type":"uint256"}],"name":"ItemPurchased","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"genzee","type":"uint256"}],"name":"StakedNft","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"genzee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"UnstakedNft","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"genzee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"UserClaimedNftRewards","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"NFT_HOLDING_WEEKLY_REWARD_AMOUNT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"NFT_STAKING_WEEKLY_REWARD_AMOUNT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PERMIT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_genzeeContract","outputs":[{"internalType":"contract IGenzee","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"adminAddresses","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"itemSKU","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"buyItem","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_nftIndex","type":"uint256"}],"name":"calculateNftHoldReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"genzeeId","type":"uint256"}],"name":"calculateStakedNftRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"genzeeIds","type":"uint256[]"}],"name":"claimNftHoldRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"genzeeIds","type":"uint256[]"}],"name":"claimStakedNftRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"latestUnstakedClaimTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nftHoldRewardsActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"genzeeIds","type":"uint256[]"}],"name":"stakeNfts","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"stakedNft","outputs":[{"internalType":"address","name":"ownerAddress","type":"address"},{"internalType":"uint96","name":"timestamp","type":"uint96"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_adminAddress","type":"address"}],"name":"toggleAdminContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"toggleNftHoldRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"genzeeIds","type":"uint256[]"}],"name":"unstakeNfts","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateNftStakedRewardAmount","outputs":[],"stateMutability":"nonpayable","type":"function"}]

61010060408190526006805461ff00191690911790556801158e460913d000006007553480156200002f57600080fd5b5060405162002098380380620020988339810160408190526200005291620002f9565b604080518082018252600781526609ec8c8eedee4f60cb1b60208083019182528351808501909452600484526309e8888b60e31b908401528151919291601291620000a1916000919062000253565b508151620000b790600190602085019062000253565b507fff0000000000000000000000000000000000000000000000000000000000000060f882901b166080524660a052620000f06200014a565b60c05250506006805460ff191690555062000118336b033b2e3c9fd0803ce8000000620001e6565b60601b6001600160601b03191660e0523360009081526008602052604090208054600160ff199091161790556200042e565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60006040516200017e919062000329565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b8060026000828254620001fa9190620003cc565b90915550506001600160a01b0382166000818152600360209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b8280546200026190620003f1565b90600052602060002090601f016020900481019282620002855760008555620002d0565b82601f10620002a057805160ff1916838001178555620002d0565b82800160010185558215620002d0579182015b82811115620002d0578251825591602001919060010190620002b3565b50620002de929150620002e2565b5090565b5b80821115620002de5760008155600101620002e3565b6000602082840312156200030b578081fd5b81516001600160a01b038116811462000322578182fd5b9392505050565b600080835482600182811c9150808316806200034657607f831692505b60208084108214156200036757634e487b7160e01b87526022600452602487fd5b8180156200037e57600181146200039057620003be565b60ff19861689528489019650620003be565b60008a815260209020885b86811015620003b65781548b8201529085019083016200039b565b505084890196505b509498975050505050505050565b60008219821115620003ec57634e487b7160e01b81526011600452602481fd5b500190565b600181811c908216806200040657607f821691505b602082108114156200042857634e487b7160e01b600052602260045260246000fd5b50919050565b60805160f81c60a05160c05160e05160601c611c1562000483600039600081816102990152818161090f01528181610d070152610f9e01526000610ac701526000610a920152600061034b0152611c156000f3fe608060405234801561001057600080fd5b50600436106102115760003560e01c80634ed38faf116101255780639a36485c116100ad578063a9059cbb1161007c578063a9059cbb14610502578063d15bf17314610515578063d505accf14610528578063da8d519f1461053b578063dd62ed3e1461055b57600080fd5b80639a36485c146104bb5780639dc29fac146104ce5780639e768ff7146104e1578063a3ac4b2b146104f357600080fd5b80637ecebe00116100f45780637ecebe0014610465578063822c0eab146104855780638456cb591461049857806395d89b41146104a05780639979c009146104a857600080fd5b80634ed38faf146103b55780635c975abb146103d857806370a08231146103e35780637c4db4a51461040357600080fd5b806324239bb1116101a8578063313ce56711610177578063313ce567146103465780633644e5151461037f5780633b0d2a67146103875780633f4ba83a1461039a57806340c10f19146103a257600080fd5b806324239bb1146102e657806324d32a53146102f95780633001ef011461030c57806330adf81f1461031f57600080fd5b806318160ddd116101e457806318160ddd146102745780631b5b78191461028b5780631c5e434f1461029457806323b872dd146102d357600080fd5b806306fdde0314610216578063095ea7b3146102345780630cb1d39f146102575780630fe2e13714610261575b600080fd5b61021e610586565b60405161022b9190611a50565b60405180910390f35b6102476102423660046118e1565b610614565b604051901515815260200161022b565b61025f610680565b005b61025f61026f3660046117bc565b6106d2565b61027d60025481565b60405190815260200161022b565b61027d60075481565b6102bb7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161022b565b6102476102e136600461182c565b610730565b61027d6102f436600461197c565b610810565b61027d61030736600461197c565b61082f565b61025f61031a36600461190c565b610857565b61027d7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b61036d7f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff909116815260200161022b565b61027d610a8e565b61025f61039536600461197c565b610ae9565b61025f610b23565b61025f6103b03660046118e1565b610b62565b6102476103c33660046117bc565b60086020526000908152604090205460ff1681565b60065460ff16610247565b61027d6103f13660046117bc565b60036020526000908152604090205481565b61043e61041136600461197c565b6009602052600090815260409020546001600160a01b03811690600160a01b90046001600160601b031682565b604080516001600160a01b0390931683526001600160601b0390911660208301520161022b565b61027d6104733660046117bc565b60056020526000908152604090205481565b61025f61049336600461190c565b610ba5565b61025f610dd5565b61021e610e12565b61025f6104b6366004611994565b610e1f565b61025f6104c936600461190c565b610ebb565b61025f6104dc3660046118e1565b611042565b60065461024790610100900460ff1681565b61027d678ac7230489e8000081565b6102476105103660046118e1565b6110ba565b61025f61052336600461190c565b611120565b61025f61053636600461186c565b6112ae565b61027d61054936600461197c565b600a6020526000908152604090205481565b61027d6105693660046117f4565b600460209081526000928352604080842090915290825290205481565b6000805461059390611b3b565b80601f01602080910402602001604051908101604052809291908181526020018280546105bf90611b3b565b801561060c5780601f106105e15761010080835404028352916020019161060c565b820191906000526020600020905b8154815290600101906020018083116105ef57829003601f168201915b505050505081565b3360008181526004602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061066f9086815260200190565b60405180910390a350600192915050565b3360009081526008602052604090205460ff1615156001146106b557604051637bfa4b9f60e01b815260040160405180910390fd5b6006805461ff001981166101009182900460ff1615909102179055565b3360009081526008602052604090205460ff16151560011461070757604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b03166000908152600860205260409020805460ff19811660ff90911615179055565b6001600160a01b0383166000908152600460209081526040808320338452909152812054600019811461078c576107678382611b24565b6001600160a01b03861660009081526004602090815260408083203384529091529020555b6001600160a01b038516600090815260036020526040812080548592906107b4908490611b24565b90915550506001600160a01b0380851660008181526003602052604090819020805487019055519091871690600080516020611bc0833981519152906107fd9087815260200190565b60405180910390a3506001949350505050565b6000818152600a6020526040812054610828816114ff565b9392505050565b600081815260096020526040812054600160a01b90046001600160601b031661082881611546565b60065460ff16156108835760405162461bcd60e51b815260040161087a90611aa3565b60405180910390fd5b600654610100900460ff166108ab5760405163c66bbf4d60e01b815260040160405180910390fd5b806108c95760405163b4fa3fb360e01b815260040160405180910390fd5b60008060008060005b85811015610a5e578686828181106108fa57634e487b7160e01b600052603260045260246000fd5b905060200201359250336001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636352211e856040518263ffffffff1660e01b815260040161095b91815260200190565b602060405180830381600087803b15801561097557600080fd5b505af1158015610989573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ad91906117d8565b6001600160a01b0316146109d45760405163130213c560e21b815260040160405180910390fd5b6000838152600a602052604090205491506109ee826114ff565b93506109fa8486611acd565b6000848152600a60205260409081902042905551909550839033907fd6d2614e67b964e6f1d256098696dfd0f60521b9051eab6c65b29fc08b4f7dfa90610a449088815260200190565b60405180910390a380610a5681611b76565b9150506108d2565b5083610a7c5760405162f3f86160e41b815260040160405180910390fd5b610a86338561157b565b505050505050565b60007f00000000000000000000000000000000000000000000000000000000000000004614610ac457610abf6115d5565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b3360009081526008602052604090205460ff161515600114610b1e57604051637bfa4b9f60e01b815260040160405180910390fd5b600755565b3360009081526008602052604090205460ff161515600114610b5857604051637bfa4b9f60e01b815260040160405180910390fd5b610b6061166f565b565b3360009081526008602052604090205460ff161515600114610b9757604051637bfa4b9f60e01b815260040160405180910390fd5b610ba1828261157b565b5050565b60065460ff1615610bc85760405162461bcd60e51b815260040161087a90611aa3565b80610be65760405163b4fa3fb360e01b815260040160405180910390fd5b60408051808201909152600080825260208201819052908190819060005b85811015610dc457868682818110610c2c57634e487b7160e01b600052603260045260246000fd5b602090810292909201356000818152600984526040908190208151808301909252546001600160a01b038116808352600160a01b9091046001600160601b0316948201949094529095509350503314801590610c91575081516001600160a01b031615155b15610caf5760405163130213c560e21b815260040160405180910390fd5b610cb883611546565b9350610cc48486611acd565b6000848152600a602052604090819020429055835190516323b872dd60e01b81523060048201526001600160a01b039182166024820152604481018690529196507f000000000000000000000000000000000000000000000000000000000000000016906323b872dd90606401600060405180830381600087803b158015610d4b57600080fd5b505af1158015610d5f573d6000803e3d6000fd5b505050600084815260096020526040808220919091555184915033907f46390c98202d07ccea0f7e324248fc8132ca146857642537eb71fb0708982e7890610daa9088815260200190565b60405180910390a380610dbc81611b76565b915050610c04565b508315610a8657610a86338561157b565b3360009081526008602052604090205460ff161515600114610e0a57604051637bfa4b9f60e01b815260040160405180910390fd5b610b60611702565b6001805461059390611b3b565b60065460ff1615610e425760405162461bcd60e51b815260040161087a90611aa3565b33600090815260036020526040902054811115610e725760405163b4fa3fb360e01b815260040160405180910390fd5b610e7c338261175a565b604080518381526020810183905233917f1452773cf753d0d7c71ed9990f7c7e2bdde4a2d08d187b3647953877e400488d910160405180910390a25050565b60065460ff1615610ede5760405162461bcd60e51b815260040161087a90611aa3565b80610efc5760405163b4fa3fb360e01b815260040160405180910390fd5b6000805b8281101561103c57838382818110610f2857634e487b7160e01b600052603260045260246000fd5b604080518082018252338082526001600160601b034281166020808501918252958602979097013560008181526009909652948490209251965116600160a01b026001600160a01b039687161790915590516323b872dd60e01b81526004810191909152306024820152604481018290529094507f0000000000000000000000000000000000000000000000000000000000000000909216916323b872dd9150606401600060405180830381600087803b158015610fe557600080fd5b505af1158015610ff9573d6000803e3d6000fd5b50506040518492503391507f509de8640671d7778d0d1dd326a08f58a657a278f69945f1d6c840d9aaa9e87c90600090a38061103481611b76565b915050610f00565b50505050565b3360009081526008602052604090205460ff16151560011461107757604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0382166000908152600360205260409020548111156110b05760405163b4fa3fb360e01b815260040160405180910390fd5b610ba1828261175a565b336000908152600360205260408120805483919083906110db908490611b24565b90915550506001600160a01b03831660008181526003602052604090819020805485019055513390600080516020611bc08339815191529061066f9086815260200190565b60065460ff16156111435760405162461bcd60e51b815260040161087a90611aa3565b806111615760405163b4fa3fb360e01b815260040160405180910390fd5b60408051808201909152600080825260208201819052908190819060005b85811015610a5e578686828181106111a757634e487b7160e01b600052603260045260246000fd5b602090810292909201356000818152600984526040908190208151808301909252546001600160a01b038116808352600160a01b9091046001600160601b03169482019490945290955093505033146112135760405163130213c560e21b815260040160405180910390fd5b61122982602001516001600160601b0316611546565b93506112358486611acd565b60008481526009602090815260409182902080546001600160a01b0316600160a01b426001600160601b0316021790559051868152919650849133917fd6d2614e67b964e6f1d256098696dfd0f60521b9051eab6c65b29fc08b4f7dfa910160405180910390a3806112a681611b76565b91505061117f565b428410156112fe5760405162461bcd60e51b815260206004820152601760248201527f5045524d49545f444541444c494e455f45585049524544000000000000000000604482015260640161087a565b6000611308610a8e565b6001600160a01b0389811660008181526005602090815260409182902080546001810190915582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98184015280840194909452938c166060840152608083018b905260a083019390935260c08083018a90528151808403909101815260e08301909152805192019190912061190160f01b6101008301526101028201929092526101228101919091526101420160408051601f198184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa158015611421573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906114575750886001600160a01b0316816001600160a01b0316145b6114945760405162461bcd60e51b815260206004820152600e60248201526d24a72b20a624a22fa9a4a3a722a960911b604482015260640161087a565b6001600160a01b0390811660009081526004602090815260408083208b8516808552908352928190208a905551898152919350918a16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350505050505050565b600080821161151657678ac7230489e80000611540565b62093a806115248342611b24565b61152e9190611ae5565b61154090678ac7230489e80000611b05565b92915050565b6000808211611556576000611540565b62093a806115648342611b24565b61156e9190611ae5565b6007546115409190611b05565b806002600082825461158d9190611acd565b90915550506001600160a01b038216600081815260036020908152604080832080548601905551848152600080516020611bc083398151915291015b60405180910390a35050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f600060405161160791906119b5565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b60065460ff166116b85760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604482015260640161087a565b6006805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b60065460ff16156117255760405162461bcd60e51b815260040161087a90611aa3565b6006805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586116e53390565b6001600160a01b03821660009081526003602052604081208054839290611782908490611b24565b90915550506002805482900390556040518181526000906001600160a01b03841690600080516020611bc0833981519152906020016115c9565b6000602082840312156117cd578081fd5b813561082881611ba7565b6000602082840312156117e9578081fd5b815161082881611ba7565b60008060408385031215611806578081fd5b823561181181611ba7565b9150602083013561182181611ba7565b809150509250929050565b600080600060608486031215611840578081fd5b833561184b81611ba7565b9250602084013561185b81611ba7565b929592945050506040919091013590565b600080600080600080600060e0888a031215611886578283fd5b873561189181611ba7565b965060208801356118a181611ba7565b95506040880135945060608801359350608088013560ff811681146118c4578384fd5b9699959850939692959460a0840135945060c09093013592915050565b600080604083850312156118f3578182fd5b82356118fe81611ba7565b946020939093013593505050565b6000806020838503121561191e578182fd5b823567ffffffffffffffff80821115611935578384fd5b818501915085601f830112611948578384fd5b813581811115611956578485fd5b8660208260051b850101111561196a578485fd5b60209290920196919550909350505050565b60006020828403121561198d578081fd5b5035919050565b600080604083850312156119a6578182fd5b50508035926020909101359150565b600080835482600182811c9150808316806119d157607f831692505b60208084108214156119f157634e487b7160e01b87526022600452602487fd5b818015611a055760018114611a1657611a42565b60ff19861689528489019650611a42565b60008a815260209020885b86811015611a3a5781548b820152908501908301611a21565b505084890196505b509498975050505050505050565b6000602080835283518082850152825b81811015611a7c57858101830151858201604001528201611a60565b81811115611a8d5783604083870101525b50601f01601f1916929092016040019392505050565b60208082526010908201526f14185d5cd8589b194e881c185d5cd95960821b604082015260600190565b60008219821115611ae057611ae0611b91565b500190565b600082611b0057634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615611b1f57611b1f611b91565b500290565b600082821015611b3657611b36611b91565b500390565b600181811c90821680611b4f57607f821691505b60208210811415611b7057634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415611b8a57611b8a611b91565b5060010190565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0381168114611bbc57600080fd5b5056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212201b0d9d984610a20725a494552e60e15571d7fcbc8c618209ff2fe98a599e026a64736f6c63430008040033000000000000000000000000201675fbfaaac3a51371e4c31ff73ac14cee2a5a

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106102115760003560e01c80634ed38faf116101255780639a36485c116100ad578063a9059cbb1161007c578063a9059cbb14610502578063d15bf17314610515578063d505accf14610528578063da8d519f1461053b578063dd62ed3e1461055b57600080fd5b80639a36485c146104bb5780639dc29fac146104ce5780639e768ff7146104e1578063a3ac4b2b146104f357600080fd5b80637ecebe00116100f45780637ecebe0014610465578063822c0eab146104855780638456cb591461049857806395d89b41146104a05780639979c009146104a857600080fd5b80634ed38faf146103b55780635c975abb146103d857806370a08231146103e35780637c4db4a51461040357600080fd5b806324239bb1116101a8578063313ce56711610177578063313ce567146103465780633644e5151461037f5780633b0d2a67146103875780633f4ba83a1461039a57806340c10f19146103a257600080fd5b806324239bb1146102e657806324d32a53146102f95780633001ef011461030c57806330adf81f1461031f57600080fd5b806318160ddd116101e457806318160ddd146102745780631b5b78191461028b5780631c5e434f1461029457806323b872dd146102d357600080fd5b806306fdde0314610216578063095ea7b3146102345780630cb1d39f146102575780630fe2e13714610261575b600080fd5b61021e610586565b60405161022b9190611a50565b60405180910390f35b6102476102423660046118e1565b610614565b604051901515815260200161022b565b61025f610680565b005b61025f61026f3660046117bc565b6106d2565b61027d60025481565b60405190815260200161022b565b61027d60075481565b6102bb7f000000000000000000000000201675fbfaaac3a51371e4c31ff73ac14cee2a5a81565b6040516001600160a01b03909116815260200161022b565b6102476102e136600461182c565b610730565b61027d6102f436600461197c565b610810565b61027d61030736600461197c565b61082f565b61025f61031a36600461190c565b610857565b61027d7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b61036d7f000000000000000000000000000000000000000000000000000000000000001281565b60405160ff909116815260200161022b565b61027d610a8e565b61025f61039536600461197c565b610ae9565b61025f610b23565b61025f6103b03660046118e1565b610b62565b6102476103c33660046117bc565b60086020526000908152604090205460ff1681565b60065460ff16610247565b61027d6103f13660046117bc565b60036020526000908152604090205481565b61043e61041136600461197c565b6009602052600090815260409020546001600160a01b03811690600160a01b90046001600160601b031682565b604080516001600160a01b0390931683526001600160601b0390911660208301520161022b565b61027d6104733660046117bc565b60056020526000908152604090205481565b61025f61049336600461190c565b610ba5565b61025f610dd5565b61021e610e12565b61025f6104b6366004611994565b610e1f565b61025f6104c936600461190c565b610ebb565b61025f6104dc3660046118e1565b611042565b60065461024790610100900460ff1681565b61027d678ac7230489e8000081565b6102476105103660046118e1565b6110ba565b61025f61052336600461190c565b611120565b61025f61053636600461186c565b6112ae565b61027d61054936600461197c565b600a6020526000908152604090205481565b61027d6105693660046117f4565b600460209081526000928352604080842090915290825290205481565b6000805461059390611b3b565b80601f01602080910402602001604051908101604052809291908181526020018280546105bf90611b3b565b801561060c5780601f106105e15761010080835404028352916020019161060c565b820191906000526020600020905b8154815290600101906020018083116105ef57829003601f168201915b505050505081565b3360008181526004602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061066f9086815260200190565b60405180910390a350600192915050565b3360009081526008602052604090205460ff1615156001146106b557604051637bfa4b9f60e01b815260040160405180910390fd5b6006805461ff001981166101009182900460ff1615909102179055565b3360009081526008602052604090205460ff16151560011461070757604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b03166000908152600860205260409020805460ff19811660ff90911615179055565b6001600160a01b0383166000908152600460209081526040808320338452909152812054600019811461078c576107678382611b24565b6001600160a01b03861660009081526004602090815260408083203384529091529020555b6001600160a01b038516600090815260036020526040812080548592906107b4908490611b24565b90915550506001600160a01b0380851660008181526003602052604090819020805487019055519091871690600080516020611bc0833981519152906107fd9087815260200190565b60405180910390a3506001949350505050565b6000818152600a6020526040812054610828816114ff565b9392505050565b600081815260096020526040812054600160a01b90046001600160601b031661082881611546565b60065460ff16156108835760405162461bcd60e51b815260040161087a90611aa3565b60405180910390fd5b600654610100900460ff166108ab5760405163c66bbf4d60e01b815260040160405180910390fd5b806108c95760405163b4fa3fb360e01b815260040160405180910390fd5b60008060008060005b85811015610a5e578686828181106108fa57634e487b7160e01b600052603260045260246000fd5b905060200201359250336001600160a01b03167f000000000000000000000000201675fbfaaac3a51371e4c31ff73ac14cee2a5a6001600160a01b0316636352211e856040518263ffffffff1660e01b815260040161095b91815260200190565b602060405180830381600087803b15801561097557600080fd5b505af1158015610989573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ad91906117d8565b6001600160a01b0316146109d45760405163130213c560e21b815260040160405180910390fd5b6000838152600a602052604090205491506109ee826114ff565b93506109fa8486611acd565b6000848152600a60205260409081902042905551909550839033907fd6d2614e67b964e6f1d256098696dfd0f60521b9051eab6c65b29fc08b4f7dfa90610a449088815260200190565b60405180910390a380610a5681611b76565b9150506108d2565b5083610a7c5760405162f3f86160e41b815260040160405180910390fd5b610a86338561157b565b505050505050565b60007f00000000000000000000000000000000000000000000000000000000000000014614610ac457610abf6115d5565b905090565b507f3bbf673757ddd646cb67690a60fd042d263c5700643984484e798fadca93664490565b3360009081526008602052604090205460ff161515600114610b1e57604051637bfa4b9f60e01b815260040160405180910390fd5b600755565b3360009081526008602052604090205460ff161515600114610b5857604051637bfa4b9f60e01b815260040160405180910390fd5b610b6061166f565b565b3360009081526008602052604090205460ff161515600114610b9757604051637bfa4b9f60e01b815260040160405180910390fd5b610ba1828261157b565b5050565b60065460ff1615610bc85760405162461bcd60e51b815260040161087a90611aa3565b80610be65760405163b4fa3fb360e01b815260040160405180910390fd5b60408051808201909152600080825260208201819052908190819060005b85811015610dc457868682818110610c2c57634e487b7160e01b600052603260045260246000fd5b602090810292909201356000818152600984526040908190208151808301909252546001600160a01b038116808352600160a01b9091046001600160601b0316948201949094529095509350503314801590610c91575081516001600160a01b031615155b15610caf5760405163130213c560e21b815260040160405180910390fd5b610cb883611546565b9350610cc48486611acd565b6000848152600a602052604090819020429055835190516323b872dd60e01b81523060048201526001600160a01b039182166024820152604481018690529196507f000000000000000000000000201675fbfaaac3a51371e4c31ff73ac14cee2a5a16906323b872dd90606401600060405180830381600087803b158015610d4b57600080fd5b505af1158015610d5f573d6000803e3d6000fd5b505050600084815260096020526040808220919091555184915033907f46390c98202d07ccea0f7e324248fc8132ca146857642537eb71fb0708982e7890610daa9088815260200190565b60405180910390a380610dbc81611b76565b915050610c04565b508315610a8657610a86338561157b565b3360009081526008602052604090205460ff161515600114610e0a57604051637bfa4b9f60e01b815260040160405180910390fd5b610b60611702565b6001805461059390611b3b565b60065460ff1615610e425760405162461bcd60e51b815260040161087a90611aa3565b33600090815260036020526040902054811115610e725760405163b4fa3fb360e01b815260040160405180910390fd5b610e7c338261175a565b604080518381526020810183905233917f1452773cf753d0d7c71ed9990f7c7e2bdde4a2d08d187b3647953877e400488d910160405180910390a25050565b60065460ff1615610ede5760405162461bcd60e51b815260040161087a90611aa3565b80610efc5760405163b4fa3fb360e01b815260040160405180910390fd5b6000805b8281101561103c57838382818110610f2857634e487b7160e01b600052603260045260246000fd5b604080518082018252338082526001600160601b034281166020808501918252958602979097013560008181526009909652948490209251965116600160a01b026001600160a01b039687161790915590516323b872dd60e01b81526004810191909152306024820152604481018290529094507f000000000000000000000000201675fbfaaac3a51371e4c31ff73ac14cee2a5a909216916323b872dd9150606401600060405180830381600087803b158015610fe557600080fd5b505af1158015610ff9573d6000803e3d6000fd5b50506040518492503391507f509de8640671d7778d0d1dd326a08f58a657a278f69945f1d6c840d9aaa9e87c90600090a38061103481611b76565b915050610f00565b50505050565b3360009081526008602052604090205460ff16151560011461107757604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0382166000908152600360205260409020548111156110b05760405163b4fa3fb360e01b815260040160405180910390fd5b610ba1828261175a565b336000908152600360205260408120805483919083906110db908490611b24565b90915550506001600160a01b03831660008181526003602052604090819020805485019055513390600080516020611bc08339815191529061066f9086815260200190565b60065460ff16156111435760405162461bcd60e51b815260040161087a90611aa3565b806111615760405163b4fa3fb360e01b815260040160405180910390fd5b60408051808201909152600080825260208201819052908190819060005b85811015610a5e578686828181106111a757634e487b7160e01b600052603260045260246000fd5b602090810292909201356000818152600984526040908190208151808301909252546001600160a01b038116808352600160a01b9091046001600160601b03169482019490945290955093505033146112135760405163130213c560e21b815260040160405180910390fd5b61122982602001516001600160601b0316611546565b93506112358486611acd565b60008481526009602090815260409182902080546001600160a01b0316600160a01b426001600160601b0316021790559051868152919650849133917fd6d2614e67b964e6f1d256098696dfd0f60521b9051eab6c65b29fc08b4f7dfa910160405180910390a3806112a681611b76565b91505061117f565b428410156112fe5760405162461bcd60e51b815260206004820152601760248201527f5045524d49545f444541444c494e455f45585049524544000000000000000000604482015260640161087a565b6000611308610a8e565b6001600160a01b0389811660008181526005602090815260409182902080546001810190915582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98184015280840194909452938c166060840152608083018b905260a083019390935260c08083018a90528151808403909101815260e08301909152805192019190912061190160f01b6101008301526101028201929092526101228101919091526101420160408051601f198184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa158015611421573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906114575750886001600160a01b0316816001600160a01b0316145b6114945760405162461bcd60e51b815260206004820152600e60248201526d24a72b20a624a22fa9a4a3a722a960911b604482015260640161087a565b6001600160a01b0390811660009081526004602090815260408083208b8516808552908352928190208a905551898152919350918a16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350505050505050565b600080821161151657678ac7230489e80000611540565b62093a806115248342611b24565b61152e9190611ae5565b61154090678ac7230489e80000611b05565b92915050565b6000808211611556576000611540565b62093a806115648342611b24565b61156e9190611ae5565b6007546115409190611b05565b806002600082825461158d9190611acd565b90915550506001600160a01b038216600081815260036020908152604080832080548601905551848152600080516020611bc083398151915291015b60405180910390a35050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f600060405161160791906119b5565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b60065460ff166116b85760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604482015260640161087a565b6006805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b60065460ff16156117255760405162461bcd60e51b815260040161087a90611aa3565b6006805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586116e53390565b6001600160a01b03821660009081526003602052604081208054839290611782908490611b24565b90915550506002805482900390556040518181526000906001600160a01b03841690600080516020611bc0833981519152906020016115c9565b6000602082840312156117cd578081fd5b813561082881611ba7565b6000602082840312156117e9578081fd5b815161082881611ba7565b60008060408385031215611806578081fd5b823561181181611ba7565b9150602083013561182181611ba7565b809150509250929050565b600080600060608486031215611840578081fd5b833561184b81611ba7565b9250602084013561185b81611ba7565b929592945050506040919091013590565b600080600080600080600060e0888a031215611886578283fd5b873561189181611ba7565b965060208801356118a181611ba7565b95506040880135945060608801359350608088013560ff811681146118c4578384fd5b9699959850939692959460a0840135945060c09093013592915050565b600080604083850312156118f3578182fd5b82356118fe81611ba7565b946020939093013593505050565b6000806020838503121561191e578182fd5b823567ffffffffffffffff80821115611935578384fd5b818501915085601f830112611948578384fd5b813581811115611956578485fd5b8660208260051b850101111561196a578485fd5b60209290920196919550909350505050565b60006020828403121561198d578081fd5b5035919050565b600080604083850312156119a6578182fd5b50508035926020909101359150565b600080835482600182811c9150808316806119d157607f831692505b60208084108214156119f157634e487b7160e01b87526022600452602487fd5b818015611a055760018114611a1657611a42565b60ff19861689528489019650611a42565b60008a815260209020885b86811015611a3a5781548b820152908501908301611a21565b505084890196505b509498975050505050505050565b6000602080835283518082850152825b81811015611a7c57858101830151858201604001528201611a60565b81811115611a8d5783604083870101525b50601f01601f1916929092016040019392505050565b60208082526010908201526f14185d5cd8589b194e881c185d5cd95960821b604082015260600190565b60008219821115611ae057611ae0611b91565b500190565b600082611b0057634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615611b1f57611b1f611b91565b500290565b600082821015611b3657611b36611b91565b500390565b600181811c90821680611b4f57607f821691505b60208210811415611b7057634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415611b8a57611b8a611b91565b5060010190565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0381168114611bbc57600080fd5b5056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212201b0d9d984610a20725a494552e60e15571d7fcbc8c618209ff2fe98a599e026a64736f6c63430008040033

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

000000000000000000000000201675fbfaaac3a51371e4c31ff73ac14cee2a5a

-----Decoded View---------------
Arg [0] : _nftContractAddress (address): 0x201675fBFAAAC3A51371E4C31FF73Ac14ceE2A5A

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000201675fbfaaac3a51371e4c31ff73ac14cee2a5a


Deployed Bytecode Sourcemap

10697:10819:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1113:18;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2749:217;;;;;;:::i;:::-;;:::i;:::-;;;6301:14:1;;6294:22;6276:41;;6264:2;6249:18;2749:217:0;6231:92:1;21399:114:0;;;:::i;:::-;;13322:151;;;;;;:::i;:::-;;:::i;1397:26::-;;;;;;;;;6474:25:1;;;6462:2;6447:18;1397:26:0;6429:76:1;10835:63:0;;;;;;10742:40;;;;;;;;-1:-1:-1;;;;;5402:32:1;;;5384:51;;5372:2;5357:18;10742:40:0;5339:102:1;3367:612:0;;;;;;:::i;:::-;;:::i;20895:219::-;;;;;;:::i;:::-;;:::i;18424:208::-;;;;;;:::i;:::-;;:::i;19609:1278::-;;;;;;:::i;:::-;;:::i;1748:146::-;;1799:95;1748:146;;1169:31;;;;;;;;10830:4:1;10818:17;;;10800:36;;10788:2;10773:18;1169:31:0;10755:87:1;5207:179:0;;;:::i;19008:138::-;;;;;;:::i;:::-;;:::i;13550:65::-;;;:::i;13047:95::-;;;;;;:::i;:::-;;:::i;11135:46::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;9183:86;9254:7;;;;9183:86;;1432:44;;;;;;:::i;:::-;;;;;;;;;;;;;;11188:48;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;11188:48:0;;;-1:-1:-1;;;11188:48:0;;-1:-1:-1;;;;;11188:48:0;;;;;;;-1:-1:-1;;;;;6016:32:1;;;5998:51;;-1:-1:-1;;;;;6085:39:1;;;6080:2;6065:18;;6058:67;5971:18;11188:48:0;5953:178:1;2015:41:0;;;;;;:::i;:::-;;;;;;;;;;;;;;15431:1480;;;;;;:::i;:::-;;:::i;13481:61::-;;;:::i;1140:20::-;;;:::i;13974:235::-;;;;;;:::i;:::-;;:::i;14625:642::-;;;;;;:::i;:::-;;:::i;13150:164::-;;;;;;:::i;:::-;;:::i;10789:39::-;;;;;;;;;;;;10934:72;;10993:13;10934:72;;2974:385;;;;;;:::i;:::-;;:::i;17133:1122::-;;;;;;:::i;:::-;;:::i;4176:1023::-;;;;;;:::i;:::-;;:::i;11243:63::-;;;;;;:::i;:::-;;;;;;;;;;;;;;1485:64;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;1113:18;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2749:217::-;2850:10;2823:4;2840:21;;;:9;:21;;;;;;;;-1:-1:-1;;;;;2840:30:0;;;;;;;;;;:39;;;2897:37;2823:4;;2840:30;;2897:37;;;;2873:6;6474:25:1;;6462:2;6447:18;;6429:76;2897:37:0;;;;;;;;-1:-1:-1;2954:4:0;2749:217;;;;:::o;21399:114::-;12791:10;12776:26;;;;:14;:26;;;;;;;;:35;;:26;:35;12772:58;;12820:10;;-1:-1:-1;;;12820:10:0;;;;;;;;;;;12772:58;21485:20:::1;::::0;;-1:-1:-1;;21461:44:0;::::1;21485:20;::::0;;;::::1;;;21484:21;21461:44:::0;;::::1;;::::0;;21399:114::o;13322:151::-;12791:10;12776:26;;;;:14;:26;;;;;;;;:35;;:26;:35;12772:58;;12820:10;;-1:-1:-1;;;12820:10:0;;;;;;;;;;;12772:58;-1:-1:-1;;;;;13436:29:0::1;;::::0;;;:14:::1;:29;::::0;;;;;;-1:-1:-1;;13403:62:0;::::1;13436:29;::::0;;::::1;13435:30;13403:62;::::0;;13322:151::o;3367:612::-;-1:-1:-1;;;;;3524:15:0;;3489:4;3524:15;;;:9;:15;;;;;;;;3540:10;3524:27;;;;;;;;-1:-1:-1;;3604:28:0;;3600:80;;3664:16;3674:6;3664:7;:16;:::i;:::-;-1:-1:-1;;;;;3634:15:0;;;;;;:9;:15;;;;;;;;3650:10;3634:27;;;;;;;:46;3600:80;-1:-1:-1;;;;;3693:15:0;;;;;;:9;:15;;;;;:25;;3712:6;;3693:15;:25;;3712:6;;3693:25;:::i;:::-;;;;-1:-1:-1;;;;;;;3869:13:0;;;;;;;:9;:13;;;;;;;:23;;;;;;3921:26;3869:13;;3921:26;;;-1:-1:-1;;;;;;;;;;;3921:26:0;;;3886:6;6474:25:1;;6462:2;6447:18;;6429:76;3921:26:0;;;;;;;;-1:-1:-1;3967:4:0;;3367:612;-1:-1:-1;;;;3367:612:0:o;20895:219::-;20969:7;21010:39;;;:28;:39;;;;;;21067;21010;21067:28;:39::i;:::-;21060:46;20895:219;-1:-1:-1;;;20895:219:0:o;18424:208::-;18500:7;18540:19;;;:9;:19;;;;;:29;-1:-1:-1;;;18540:29:0;;-1:-1:-1;;;;;18540:29:0;18587:37;18540:29;18587:26;:37::i;19609:1278::-;9254:7;;;;9508:9;9500:38;;;;-1:-1:-1;;;9500:38:0;;;;;;;:::i;:::-;;;;;;;;;19707:20:::1;::::0;::::1;::::0;::::1;;;19702:59;;19736:25;;-1:-1:-1::0;;;19736:25:0::1;;;;;;;;;;;19702:59;19776:21:::0;19772:48:::1;;19806:14;;-1:-1:-1::0;;;19806:14:0::1;;;;;;;;;;;19772:48;19889:20;20008:15:::0;20083:16:::1;20171:28:::0;20217:9:::1;20212:566;20228:20:::0;;::::1;20212:566;;;20281:9;;20291:1;20281:12;;;;;-1:-1:-1::0;;;20281:12:0::1;;;;;;;;;;;;;;;20270:23;;20349:10;-1:-1:-1::0;;;;;20312:47:0::1;:15;-1:-1:-1::0;;;;;20312:23:0::1;;20336:8;20312:33;;;;;;;;;;;;;6474:25:1::0;;6462:2;6447:18;;6429:76;20312:33:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;20312:47:0::1;;20308:77;;20368:17;;-1:-1:-1::0;;;20368:17:0::1;;;;;;;;;;;20308:77;20423:38;::::0;;;:28:::1;:38;::::0;;;;;;-1:-1:-1;20488:50:0::1;20423:38:::0;20488:28:::1;:50::i;:::-;20478:60:::0;-1:-1:-1;20553:23:0::1;20478:60:::0;20553:23;::::1;:::i;:::-;20636:38;::::0;;;:28:::1;:38;::::0;;;;;;20677:15:::1;20636:56:::0;;20714:52;20553:23;;-1:-1:-1;20665:8:0;;20736:10:::1;::::0;20714:52:::1;::::0;::::1;::::0;20758:7;6474:25:1;;6462:2;6447:18;;6429:76;20714:52:0::1;;;;;;;;20250:3:::0;::::1;::::0;::::1;:::i;:::-;;;;20212:566;;;-1:-1:-1::0;20794:17:0;20790:47:::1;;20820:17;;-1:-1:-1::0;;;20820:17:0::1;;;;;;;;;;;20790:47;20848:31;20854:10;20866:12;20848:5;:31::i;:::-;9549:1;;;;19609:1278:::0;;:::o;5207:179::-;5264:7;5308:16;5291:13;:33;:87;;5354:24;:22;:24::i;:::-;5284:94;;5207:179;:::o;5291:87::-;-1:-1:-1;5327:24:0;;5207:179::o;19008:138::-;12791:10;12776:26;;;;:14;:26;;;;;;;;:35;;:26;:35;12772:58;;12820:10;;-1:-1:-1;;;12820:10:0;;;;;;;;;;;12772:58;19094:32:::1;:44:::0;19008:138::o;13550:65::-;12791:10;12776:26;;;;:14;:26;;;;;;;;:35;;:26;:35;12772:58;;12820:10;;-1:-1:-1;;;12820:10:0;;;;;;;;;;;12772:58;13597:10:::1;:8;:10::i;:::-;13550:65::o:0;13047:95::-;12791:10;12776:26;;;;:14;:26;;;;;;;;:35;;:26;:35;12772:58;;12820:10;;-1:-1:-1;;;12820:10:0;;;;;;;;;;;12772:58;13117:17:::1;13123:2;13127:6;13117:5;:17::i;:::-;13047:95:::0;;:::o;15431:1480::-;9254:7;;;;9508:9;9500:38;;;;-1:-1:-1;;;9500:38:0;;;;;;;:::i;:::-;15520:21;15516:48:::1;;15550:14;;-1:-1:-1::0;;;15550:14:0::1;;;;;;;;;;;15516:48;-1:-1:-1::0;;;;;;;;;15633:20:0::1;-1:-1:-1::0;;;;;;;;;15633:20:0;;;;;15971:9:::1;15966:846;15982:20:::0;;::::1;15966:846;;;16035:9;;16045:1;16035:12;;;;;-1:-1:-1::0;;;16035:12:0::1;;;;;;;;;;::::0;;::::1;::::0;;;::::1;;16070:19;::::0;;;:9:::1;:19:::0;;;;;;;16062:27;;;;::::1;::::0;;;;-1:-1:-1;;;;;16062:27:0;::::1;::::0;;;-1:-1:-1;;;16062:27:0;;::::1;-1:-1:-1::0;;;;;16062:27:0::1;::::0;;::::1;::::0;;;;16035:12;;-1:-1:-1;16062:27:0;-1:-1:-1;;16132:10:0::1;16110:32;::::0;::::1;::::0;:68:::1;;-1:-1:-1::0;16146:18:0;;-1:-1:-1;;;;;16146:32:0::1;::::0;::::1;16110:68;16106:134;;;16207:17;;-1:-1:-1::0;;;16207:17:0::1;;;;;;;;;;;16106:134;16266:36;16293:8;16266:26;:36::i;:::-;16256:46:::0;-1:-1:-1;16317:23:0::1;16256:46:::0;16317:23;::::1;:::i;:::-;16410:38;::::0;;;:28:::1;:38;::::0;;;;;;16451:15:::1;16410:56:::0;;16664:18;;16620:73;;-1:-1:-1;;;16620:73:0;;16657:4:::1;16620:73;::::0;::::1;5686:34:1::0;-1:-1:-1;;;;;5756:15:1;;;5736:18;;;5729:43;5788:18;;;5781:34;;;16317:23:0;;-1:-1:-1;16620:15:0::1;:28;::::0;::::1;::::0;5621:18:1;;16620:73:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;;16717:19:0::1;::::0;;;:9:::1;:19;::::0;;;;;16710:26;;;;16758:42;16727:8;;-1:-1:-1;16770:10:0::1;::::0;16758:42:::1;::::0;::::1;::::0;16792:7;6474:25:1;;6462:2;6447:18;;6429:76;16758:42:0::1;;;;;;;;16004:3:::0;::::1;::::0;::::1;:::i;:::-;;;;15966:846;;;-1:-1:-1::0;16828:16:0;;16824:80:::1;;16861:31;16867:10;16879:12;16861:5;:31::i;13481:61::-:0;12791:10;12776:26;;;;:14;:26;;;;;;;;:35;;:26;:35;12772:58;;12820:10;;-1:-1:-1;;;12820:10:0;;;;;;;;;;;12772:58;13526:8:::1;:6;:8::i;1140:20::-:0;;;;;;;:::i;13974:235::-;9254:7;;;;9508:9;9500:38;;;;-1:-1:-1;;;9500:38:0;;;;;;;:::i;:::-;14064:10:::1;14054:21;::::0;;;:9:::1;:21;::::0;;;;;:30;-1:-1:-1;14050:57:0::1;;;14093:14;;-1:-1:-1::0;;;14093:14:0::1;;;;;;;;;;;14050:57;14118:25;14124:10;14136:6;14118:5;:25::i;:::-;14159:42;::::0;;10579:25:1;;;10635:2;10620:18;;10613:34;;;14173:10:0::1;::::0;14159:42:::1;::::0;10552:18:1;14159:42:0::1;;;;;;;13974:235:::0;;:::o;14625:642::-;9254:7;;;;9508:9;9500:38;;;;-1:-1:-1;;;9500:38:0;;;;;;;:::i;:::-;14712:21;14708:48:::1;;14742:14;;-1:-1:-1::0;;;14742:14:0::1;;;;;;;;;;;14708:48;14767:16;14799:9:::0;14794:466:::1;14810:20:::0;;::::1;14794:466;;;14863:9;;14873:1;14863:12;;;;;-1:-1:-1::0;;;14863:12:0::1;;;;;;;;;15069:48;::::0;;;;::::1;::::0;;15081:10:::1;15069:48:::0;;;-1:-1:-1;;;;;15100:15:0::1;15069:48:::0;::::1;14863:12;15069:48:::0;;::::1;::::0;;;14863:12;;::::1;::::0;;;::::1;;-1:-1:-1::0;15047:19:0;;;:9:::1;:19:::0;;;;;;;:70;;;;::::1;-1:-1:-1::0;;;15047:70:0::1;-1:-1:-1::0;;;;;15047:70:0;;::::1;;::::0;;;15132:65;;-1:-1:-1;;;15132:65:0;;::::1;::::0;::::1;5686:34:1::0;;;;15181:4:0::1;5736:18:1::0;;;5729:43;5788:18;;;5781:34;;;14863:12:0;;-1:-1:-1;15132:15:0::1;:28:::0;;::::1;::::0;::::1;::::0;-1:-1:-1;5621:18:1;;15132:65:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;15217:31:0::1;::::0;15239:8;;-1:-1:-1;15227:10:0::1;::::0;-1:-1:-1;15217:31:0::1;::::0;;;::::1;14832:3:::0;::::1;::::0;::::1;:::i;:::-;;;;14794:466;;;;9549:1;14625:642:::0;;:::o;13150:164::-;12791:10;12776:26;;;;:14;:26;;;;;;;;:35;;:26;:35;12772:58;;12820:10;;-1:-1:-1;;;12820:10:0;;;;;;;;;;;12772:58;-1:-1:-1;;;;;13227:16:0;::::1;;::::0;;;:9:::1;:16;::::0;;;;;:25;-1:-1:-1;13223:52:0::1;;;13261:14;;-1:-1:-1::0;;;13261:14:0::1;;;;;;;;;;;13223:52;13286:20;13292:5;13299:6;13286:5;:20::i;2974:385::-:0;3071:10;3044:4;3061:21;;;:9;:21;;;;;:31;;3086:6;;3061:21;3044:4;;3061:31;;3086:6;;3061:31;:::i;:::-;;;;-1:-1:-1;;;;;;;3243:13:0;;;;;;:9;:13;;;;;;;:23;;;;;;3295:32;3304:10;;-1:-1:-1;;;;;;;;;;;3295:32:0;;;3260:6;6474:25:1;;6462:2;6447:18;;6429:76;17133:1122:0;9254:7;;;;9508:9;9500:38;;;;-1:-1:-1;;;9500:38:0;;;;;;;:::i;:::-;17232:21;17228:48:::1;;17262:14;;-1:-1:-1::0;;;17262:14:0::1;;;;;;;;;;;17228:48;-1:-1:-1::0;;;;;;;;;17345:20:0::1;-1:-1:-1::0;;;;;;;;;17345:20:0;;;;;17683:9:::1;17678:468;17694:20:::0;;::::1;17678:468;;;17747:9;;17757:1;17747:12;;;;;-1:-1:-1::0;;;17747:12:0::1;;;;;;;;;;::::0;;::::1;::::0;;;::::1;;17782:19;::::0;;;:9:::1;:19:::0;;;;;;;17774:27;;;;::::1;::::0;;;;-1:-1:-1;;;;;17774:27:0;::::1;::::0;;;-1:-1:-1;;;17774:27:0;;::::1;-1:-1:-1::0;;;;;17774:27:0::1;::::0;;::::1;::::0;;;;17747:12;;-1:-1:-1;17774:27:0;-1:-1:-1;;17844:10:0::1;17822:32;17818:62;;17863:17;;-1:-1:-1::0;;;17863:17:0::1;;;;;;;;;;;17818:62;17907:43;17934:5;:15;;;-1:-1:-1::0;;;;;17907:43:0::1;:26;:43::i;:::-;17897:53:::0;-1:-1:-1;17965:23:0::1;17897:53:::0;17965:23;::::1;:::i;:::-;18005:19;::::0;;;:9:::1;:19;::::0;;;;;;;;:55;;-1:-1:-1;;;;;18005:55:0::1;-1:-1:-1::0;;;18044:15:0::1;-1:-1:-1::0;;;;;18005:55:0::1;;;::::0;;18082:52;;6474:25:1;;;17965:23:0;;-1:-1:-1;18005:19:0;;18104:10:::1;::::0;18082:52:::1;::::0;6447:18:1;18082:52:0::1;;;;;;;17716:3:::0;::::1;::::0;::::1;:::i;:::-;;;;17678:468;;4176:1023:::0;4404:15;4392:8;:27;;4384:63;;;;-1:-1:-1;;;4384:63:0;;10073:2:1;4384:63:0;;;10055:21:1;10112:2;10092:18;;;10085:30;10151:25;10131:18;;;10124:53;10194:18;;4384:63:0;10045:173:1;4384:63:0;4617:14;4734:18;:16;:18::i;:::-;-1:-1:-1;;;;;4836:13:0;;;;;;;:6;:13;;;;;;;;;:15;;;;;;;;4785:77;;1799:95;4785:77;;;6797:25:1;6876:18;;;6869:43;;;;6948:15;;;6928:18;;;6921:43;6980:18;;;6973:34;;;7023:19;;;7016:35;;;;7067:19;;;;7060:35;;;4785:77:0;;;;;;;;;;6769:19:1;;;4785:77:0;;;4775:88;;;;;;;;-1:-1:-1;;;4662:220:0;;;5099:27:1;5142:11;;;5135:27;;;;5178:12;;;5171:28;;;;5215:12;;4662:220:0;;;-1:-1:-1;;4662:220:0;;;;;;;;;4634:263;;4662:220;4634:263;;;;4914:24;4941:26;;;;;;;;;7827:25:1;;;7900:4;7888:17;;7868:18;;;7861:45;;;;7922:18;;;7915:34;;;7965:18;;;7958:34;;;4634:263:0;;-1:-1:-1;4914:24:0;4941:26;;7799:19:1;;4941:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4941:26:0;;-1:-1:-1;;4941:26:0;;;-1:-1:-1;;;;;;;4992:30:0;;;;;;:59;;;5046:5;-1:-1:-1;;;;;5026:25:0;:16;-1:-1:-1;;;;;5026:25:0;;4992:59;4984:86;;;;-1:-1:-1;;;4984:86:0;;9730:2:1;4984:86:0;;;9712:21:1;9769:2;9749:18;;;9742:30;-1:-1:-1;;;9788:18:1;;;9781:44;9842:18;;4984:86:0;9702:164:1;4984:86:0;-1:-1:-1;;;;;5087:27:0;;;;;;;:9;:27;;;;;;;;:36;;;;;;;;;;;;;:44;;;5160:31;6474:25:1;;;5087:36:0;;-1:-1:-1;5160:31:0;;;;;;6447:18:1;5160:31:0;;;;;;;4176:1023;;;;;;;:::o;21122:269::-;21201:7;21241:1;21229:9;:13;21228:155;;10993:13;21228:155;;;21327:7;21296:27;21314:9;21296:15;:27;:::i;:::-;21295:39;;;;:::i;:::-;21259:76;;10993:13;21259:76;:::i;:::-;21221:162;21122:269;-1:-1:-1;;21122:269:0:o;18640:234::-;18717:7;18756:1;18744:9;:13;:122;;18865:1;18744:122;;;18841:7;18810:27;18828:9;18810:15;:27;:::i;:::-;18809:39;;;;:::i;:::-;18773:32;;:76;;;;:::i;6051:335::-;6137:6;6122:11;;:21;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;6294:13:0;;;;;;:9;:13;;;;;;;;:23;;;;;;6346:32;6474:25:1;;;-1:-1:-1;;;;;;;;;;;6346:32:0;6447:18:1;6346:32:0;;;;;;;;6051:335;;:::o;5394:457::-;5459:7;5560:95;5694:4;5678:22;;;;;;:::i;:::-;;;;;;;;;;5527:301;;;7365:25:1;;;;7406:18;;7399:34;;;;5723:14:0;7449:18:1;;;7442:34;5760:13:0;7492:18:1;;;7485:34;5804:4:0;7535:19:1;;;7528:61;7337:19;;5527:301:0;;;;;;;;;;;;5499:344;;;;;;5479:364;;5394:457;:::o;10242:120::-;9254:7;;;;9778:41;;;;-1:-1:-1;;;9778:41:0;;9036:2:1;9778:41:0;;;9018:21:1;9075:2;9055:18;;;9048:30;-1:-1:-1;;;9094:18:1;;;9087:50;9154:18;;9778:41:0;9008:170:1;9778:41:0;10301:7:::1;:15:::0;;-1:-1:-1;;10301:15:0::1;::::0;;10332:22:::1;7911:10:::0;10341:12:::1;10332:22;::::0;-1:-1:-1;;;;;5402:32:1;;;5384:51;;5372:2;5357:18;10332:22:0::1;;;;;;;10242:120::o:0;9983:118::-;9254:7;;;;9508:9;9500:38;;;;-1:-1:-1;;;9500:38:0;;;;;;;:::i;:::-;10043:7:::1;:14:::0;;-1:-1:-1;;10043:14:0::1;10053:4;10043:14;::::0;;10073:20:::1;10080:12;7911:10:::0;;7831:98;6394:338;-1:-1:-1;;;;;6467:15:0;;;;;;:9;:15;;;;;:25;;6486:6;;6467:15;:25;;6486:6;;6467:25;:::i;:::-;;;;-1:-1:-1;;6640:11:0;:21;;;;;;;6690:34;;6474:25:1;;;-1:-1:-1;;;;;;;6690:34:0;;;-1:-1:-1;;;;;;;;;;;6690:34:0;6462:2:1;6447:18;6690:34:0;6429:76:1;14:257;73:6;126:2;114:9;105:7;101:23;97:32;94:2;;;147:6;139;132:22;94:2;191:9;178:23;210:31;235:5;210:31;:::i;276:261::-;346:6;399:2;387:9;378:7;374:23;370:32;367:2;;;420:6;412;405:22;367:2;457:9;451:16;476:31;501:5;476:31;:::i;542:398::-;610:6;618;671:2;659:9;650:7;646:23;642:32;639:2;;;692:6;684;677:22;639:2;736:9;723:23;755:31;780:5;755:31;:::i;:::-;805:5;-1:-1:-1;862:2:1;847:18;;834:32;875:33;834:32;875:33;:::i;:::-;927:7;917:17;;;629:311;;;;;:::o;945:466::-;1022:6;1030;1038;1091:2;1079:9;1070:7;1066:23;1062:32;1059:2;;;1112:6;1104;1097:22;1059:2;1156:9;1143:23;1175:31;1200:5;1175:31;:::i;:::-;1225:5;-1:-1:-1;1282:2:1;1267:18;;1254:32;1295:33;1254:32;1295:33;:::i;:::-;1049:362;;1347:7;;-1:-1:-1;;;1401:2:1;1386:18;;;;1373:32;;1049:362::o;1416:849::-;1527:6;1535;1543;1551;1559;1567;1575;1628:3;1616:9;1607:7;1603:23;1599:33;1596:2;;;1650:6;1642;1635:22;1596:2;1694:9;1681:23;1713:31;1738:5;1713:31;:::i;:::-;1763:5;-1:-1:-1;1820:2:1;1805:18;;1792:32;1833:33;1792:32;1833:33;:::i;:::-;1885:7;-1:-1:-1;1939:2:1;1924:18;;1911:32;;-1:-1:-1;1990:2:1;1975:18;;1962:32;;-1:-1:-1;2046:3:1;2031:19;;2018:33;2095:4;2082:18;;2070:31;;2060:2;;2120:6;2112;2105:22;2060:2;1586:679;;;;-1:-1:-1;1586:679:1;;;;2148:7;2202:3;2187:19;;2174:33;;-1:-1:-1;2254:3:1;2239:19;;;2226:33;;1586:679;-1:-1:-1;;1586:679:1:o;2270:325::-;2338:6;2346;2399:2;2387:9;2378:7;2374:23;2370:32;2367:2;;;2420:6;2412;2405:22;2367:2;2464:9;2451:23;2483:31;2508:5;2483:31;:::i;:::-;2533:5;2585:2;2570:18;;;;2557:32;;-1:-1:-1;;;2357:238:1:o;2600:665::-;2686:6;2694;2747:2;2735:9;2726:7;2722:23;2718:32;2715:2;;;2768:6;2760;2753:22;2715:2;2813:9;2800:23;2842:18;2883:2;2875:6;2872:14;2869:2;;;2904:6;2896;2889:22;2869:2;2947:6;2936:9;2932:22;2922:32;;2992:7;2985:4;2981:2;2977:13;2973:27;2963:2;;3019:6;3011;3004:22;2963:2;3064;3051:16;3090:2;3082:6;3079:14;3076:2;;;3111:6;3103;3096:22;3076:2;3169:7;3164:2;3154:6;3151:1;3147:14;3143:2;3139:23;3135:32;3132:45;3129:2;;;3195:6;3187;3180:22;3129:2;3231;3223:11;;;;;3253:6;;-1:-1:-1;2705:560:1;;-1:-1:-1;;;;2705:560:1:o;3270:190::-;3329:6;3382:2;3370:9;3361:7;3357:23;3353:32;3350:2;;;3403:6;3395;3388:22;3350:2;-1:-1:-1;3431:23:1;;3340:120;-1:-1:-1;3340:120:1:o;3465:258::-;3533:6;3541;3594:2;3582:9;3573:7;3569:23;3565:32;3562:2;;;3615:6;3607;3600:22;3562:2;-1:-1:-1;;3643:23:1;;;3713:2;3698:18;;;3685:32;;-1:-1:-1;3552:171:1:o;3728:1108::-;3858:3;3887;3922:6;3916:13;3952:3;3974:1;4002:9;3998:2;3994:18;3984:28;;4062:2;4051:9;4047:18;4084;4074:2;;4128:4;4120:6;4116:17;4106:27;;4074:2;4154;4202;4194:6;4191:14;4171:18;4168:38;4165:2;;;-1:-1:-1;;;4229:33:1;;4285:4;4282:1;4275:15;4315:4;4236:3;4303:17;4165:2;4346:18;4373:104;;;;4491:1;4486:325;;;;4339:472;;4373:104;-1:-1:-1;;4406:24:1;;4394:37;;4451:16;;;;-1:-1:-1;4373:104:1;;4486:325;10897:4;10916:17;;;10966:4;10950:21;;4584:3;4600:165;4614:6;4611:1;4608:13;4600:165;;;4692:14;;4679:11;;;4672:35;4735:16;;;;4629:10;;4600:165;;;4604:3;;4794:6;4789:3;4785:16;4778:23;;4339:472;-1:-1:-1;4827:3:1;;3866:970;-1:-1:-1;;;;;;;;3866:970:1:o;8226:603::-;8338:4;8367:2;8396;8385:9;8378:21;8428:6;8422:13;8471:6;8466:2;8455:9;8451:18;8444:34;8496:4;8509:140;8523:6;8520:1;8517:13;8509:140;;;8618:14;;;8614:23;;8608:30;8584:17;;;8603:2;8580:26;8573:66;8538:10;;8509:140;;;8667:6;8664:1;8661:13;8658:2;;;8737:4;8732:2;8723:6;8712:9;8708:22;8704:31;8697:45;8658:2;-1:-1:-1;8813:2:1;8792:15;-1:-1:-1;;8788:29:1;8773:45;;;;8820:2;8769:54;;8347:482;-1:-1:-1;;;8347:482:1:o;9183:340::-;9385:2;9367:21;;;9424:2;9404:18;;;9397:30;-1:-1:-1;;;9458:2:1;9443:18;;9436:46;9514:2;9499:18;;9357:166::o;10982:128::-;11022:3;11053:1;11049:6;11046:1;11043:13;11040:2;;;11059:18;;:::i;:::-;-1:-1:-1;11095:9:1;;11030:80::o;11115:217::-;11155:1;11181;11171:2;;-1:-1:-1;;;11206:31:1;;11260:4;11257:1;11250:15;11288:4;11213:1;11278:15;11171:2;-1:-1:-1;11317:9:1;;11161:171::o;11337:168::-;11377:7;11443:1;11439;11435:6;11431:14;11428:1;11425:21;11420:1;11413:9;11406:17;11402:45;11399:2;;;11450:18;;:::i;:::-;-1:-1:-1;11490:9:1;;11389:116::o;11510:125::-;11550:4;11578:1;11575;11572:8;11569:2;;;11583:18;;:::i;:::-;-1:-1:-1;11620:9:1;;11559:76::o;11640:380::-;11719:1;11715:12;;;;11762;;;11783:2;;11837:4;11829:6;11825:17;11815:27;;11783:2;11890;11882:6;11879:14;11859:18;11856:38;11853:2;;;11936:10;11931:3;11927:20;11924:1;11917:31;11971:4;11968:1;11961:15;11999:4;11996:1;11989:15;11853:2;;11695:325;;;:::o;12025:135::-;12064:3;-1:-1:-1;;12085:17:1;;12082:2;;;12105:18;;:::i;:::-;-1:-1:-1;12152:1:1;12141:13;;12072:88::o;12165:127::-;12226:10;12221:3;12217:20;12214:1;12207:31;12257:4;12254:1;12247:15;12281:4;12278:1;12271:15;12297:131;-1:-1:-1;;;;;12372:31:1;;12362:42;;12352:2;;12418:1;12415;12408:12;12352:2;12342:86;:::o

Swarm Source

ipfs://1b0d9d984610a20725a494552e60e15571d7fcbc8c618209ff2fe98a599e026a
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.