ETH Price: $3,149.10 (+1.20%)
Gas: 9.81 Gwei

Token

Home Team Heroes: Baseball 2023 Color Pop Inserts (HTHCPBASEBALL23)
 

Overview

Max Total Supply

0 HTHCPBASEBALL23

Holders

40

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A

Other Info

Filtered by Token Holder
Null: 0x000...000
0x0000000000000000000000000000000000000000
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:
Token

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 20000 runs

Other Settings:
default evmVersion
File 1 of 6 : Token.sol
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.9;

import "./Auth.sol";
import "./ERC1155.sol";
import "@openzeppelin/contracts/security/Pausable.sol";
import "@openzeppelin/contracts/access/Ownable.sol";

// import "hardhat/console.sol";

struct TokenConfig {
    bool added;
    bool canMint;
    bool canBurn;
    uint256 supplyLimit;
}

contract Token is ERC1155, Pausable, Ownable, Auth {
    string public name;
    string public symbol;
    string public contractURI;
    string private _uri;

    mapping(address => bool) private _approvalAllowlist;

    uint16 public constant ROLE_ADD_FT = 1 << 0;
    uint16 public constant ROLE_MODIFY_FT = 1 << 1;
    uint16 public constant ROLE_MINT_FT = 1 << 2;
    uint16 public constant ROLE_MINT_NFT = 1 << 3;
    uint16 public constant ROLE_BATCH_MINT_NFT = 1 << 4;
    uint16 public constant ROLE_BURN_FT = 1 << 5;
    uint16 public constant ROLE_BURN_NFT = 1 << 6;
    uint16 public constant ROLE_BATCH_BURN_NFT = 1 << 7;
    uint16 public constant ROLE_REFRESH_METADATA = 1 << 8;
    uint16 public constant ROLE_SET_PAUSED = 1 << 9;
    uint16 public constant ROLE_BYPASS_PAUSE = 1 << 10;

    uint256 public constant FUNGIBLE_TOKEN_UPPER_BOUND = 10_000;

    mapping(uint256 => TokenConfig) private _added;

    mapping(uint256 => uint256) private _minted;
    mapping(uint256 => uint256) private _burned;

    constructor(
        string memory name_,
        string memory symbol_,
        string memory contractURI_,
        string memory uri_
    ) ERC1155() {
        setMetadata(name_, symbol_, contractURI_, uri_);

        // Contract owner gets all roles by default. (11 roles, so the mask is 2^12 - 1 = 0b111_1111_1111.)
        setRole(msg.sender, (1 << 12) - 1);
    }

    function setMetadata(
        string memory name_,
        string memory symbol_,
        string memory contractURI_,
        string memory uri_
    ) public onlyOwner {
        name = name_;
        symbol = symbol_;
        contractURI = contractURI_;
        _uri = uri_;
    }

    function uri(
        uint256
    ) public view override(ERC1155) returns (string memory) {
        return _uri;
    }

    function setApprovalAllowlist(
        address operator,
        bool approved
    ) public onlyOwner {
        _approvalAllowlist[operator] = approved;
    }

    function isApprovedForAll(
        address owner,
        address operator
    ) public view override(ERC1155) returns (bool) {
        if (_approvalAllowlist[operator] == true) {
            return true;
        }

        return super.isApprovedForAll(owner, operator);
    }

    function setPaused(bool b) public requireRole(ROLE_SET_PAUSED) {
        if (b) {
            require(b && !paused(), "Contract is already paused");
            _pause();
            return;
        }

        require(!b && paused(), "Contract is not paused");
        _unpause();
    }

    function _isFungible(uint256 id) internal pure returns (bool) {
        return id < FUNGIBLE_TOKEN_UPPER_BOUND;
    }

    function _supplyLimit(uint256 id) internal view returns (uint256) {
        if (!_isFungible(id)) {
            return 1;
        }

        return _added[id].supplyLimit;
    }

    function supplyLimit(uint256 id) public view returns (uint256) {
        return _supplyLimit(id);
    }

    function totalSupply(uint256 id) public view returns (uint256) {
        return _minted[id] - _burned[id];
    }

    function addFT(
        uint256 id,
        uint256 supplyLimit_,
        bool canMint_,
        bool canBurn_
    ) public requireRole(ROLE_ADD_FT) {
        require(_added[id].added == false, "Token already added.");

        _added[id] = TokenConfig(true, canMint_, canBurn_, supplyLimit_);

        emit TransferSingle(_msgSender(), address(0), address(0), id, 0);
    }

    function modifyFT(
        uint256 id,
        uint256 supplyLimit_,
        bool canMint_,
        bool canBurn_
    ) public requireRole(ROLE_MODIFY_FT) {
        require(_added[id].added == true, "Token not added.");

        _added[id] = TokenConfig(true, canMint_, canBurn_, supplyLimit_);
    }

    function mintFT(
        address to,
        uint256 tokenID,
        uint256 quantity
    ) public requireRole(ROLE_MINT_FT) {
        require(_isFungible(tokenID), "Token is not fungible.");
        require(_added[tokenID].added, "Token type not added.");
        require(_added[tokenID].canMint, "Token cannot be minted.");
        require(
            supplyLimit(tokenID) == 0 ||
                (_minted[tokenID] + quantity <= supplyLimit(tokenID)),
            "Mint would exceed supply limit."
        );

        _mint(to, tokenID, quantity, "");
        _minted[tokenID] += quantity;
    }

    function mintNFT(
        address to,
        uint256 tokenID
    ) public requireRole(ROLE_MINT_NFT) {
        require(!_isFungible(tokenID), "Token is fungible.");
        require(_minted[tokenID] == 0, "Token is already minted.");

        _minted[tokenID]++;
        _mint(to, tokenID, 1, "");
    }

    function batchMintNFT(
        address to,
        uint256[] calldata ids
    ) public requireRole(ROLE_BATCH_MINT_NFT) {
        for (uint256 i = 0; i < ids.length; i++) {
            uint256 id = ids[i];

            require(!_isFungible(id), "Token is fungible.");
            require(_minted[id] == 0, "Token is already minted.");
        }

        for (uint256 i = 0; i < ids.length; i++) {
            uint256 id = ids[i];

            _minted[id]++;
            _mint(to, id, 1, "");
        }
    }

    function burnFT(
        address owner,
        uint256 tokenID,
        uint256 quantity
    ) public requireRole(ROLE_BURN_FT) {
        require(_isFungible(tokenID), "Token is not fungible.");
        require(_added[tokenID].added, "Token type not added.");
        require(_added[tokenID].canBurn, "Token cannot be burned.");

        _burn(owner, tokenID, quantity);
    }

    function burnNFT(
        address owner,
        uint256 tokenID
    ) public requireRole(ROLE_BURN_NFT) {
        require(!_isFungible(tokenID), "Token is fungible.");
        require(_minted[tokenID] == 1, "Token is not minted.");

        _burned[tokenID]++;
        _burn(owner, tokenID, 1);
    }

    function batchBurnNFT(
        address owner,
        uint256[] calldata ids
    ) public requireRole(ROLE_BATCH_BURN_NFT) {
        for (uint256 i = 0; i < ids.length; i++) {
            uint256 id = ids[i];

            require(!_isFungible(id), "Token is fungible.");
            require(_minted[id] == 1, "Token is not minted.");
        }

        for (uint256 i = 0; i < ids.length; i++) {
            uint256 id = ids[i];

            _burned[id]++;
            _burn(owner, id, 1);
        }
    }

    function safeTransferFrom(
        address from,
        address to,
        uint256 id,
        uint256 amount,
        bytes calldata data
    ) public override(ERC1155) {
        if (paused()) {
            if (!_hasRole(_msgSender(), ROLE_BYPASS_PAUSE)) {
                revert("Token is paused");
            }
        }

        return super.safeTransferFrom(from, to, id, amount, data);
    }

    function safeBatchTransferFrom(
        address from,
        address to,
        uint256[] calldata ids,
        uint256[] calldata amounts,
        bytes calldata data
    ) public override(ERC1155) {
        if (paused()) {
            if (!_hasRole(_msgSender(), ROLE_BYPASS_PAUSE)) {
                revert("Token is paused");
            }
        }

        return super.safeBatchTransferFrom(from, to, ids, amounts, data);
    }

    event MetadataUpdate(uint256 _tokenId);
    event BatchMetadataUpdate(uint256 _fromTokenId, uint256 _toTokenId);

    function updateMetadata(
        uint256 id
    ) public requireRole(ROLE_REFRESH_METADATA) {
        emit MetadataUpdate(id);
    }

    function updateAllMetadata() public requireRole(ROLE_REFRESH_METADATA) {
        emit BatchMetadataUpdate(0, type(uint256).max);
    }

    function setRole(address operator, uint16 mask) public onlyOwner {
        _setRole(operator, mask);
    }

    function hasRole(address operator, uint16 role) public view returns (bool) {
        return _hasRole(operator, role);
    }

    function _repeat(
        uint256 value,
        uint256 length
    ) private pure returns (uint256[] memory) {
        uint256[] memory array = new uint256[](length);
        for (uint256 i = 0; i < length; i++) {
            array[i] = value;
        }

        return array;
    }
}

File 2 of 6 : Ownable.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)

pragma solidity ^0.8.0;

import "../utils/Context.sol";

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _transferOwnership(_msgSender());
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

File 3 of 6 : Pausable.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.7.0) (security/Pausable.sol)

pragma solidity ^0.8.0;

import "../utils/Context.sol";

/**
 * @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 Modifier to make a function callable only when the contract is not paused.
     *
     * Requirements:
     *
     * - The contract must not be paused.
     */
    modifier whenNotPaused() {
        _requireNotPaused();
        _;
    }

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

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

    /**
     * @dev Throws if the contract is paused.
     */
    function _requireNotPaused() internal view virtual {
        require(!paused(), "Pausable: paused");
    }

    /**
     * @dev Throws if the contract is not paused.
     */
    function _requirePaused() internal view virtual {
        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 4 of 6 : Context.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

pragma solidity ^0.8.0;

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

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

File 5 of 6 : Auth.sol
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.9;

import "@openzeppelin/contracts/utils/Context.sol";

contract Auth is Context {
    error NotAuthorized(uint16 req, address sender);

    mapping(address => uint16) _roles;

    modifier requireRole(uint16 req) {
        if (!_hasRole(_msgSender(), req)) {
            revert NotAuthorized(req, _msgSender());
        }
        _;
    }

    function _setRole(address operator, uint16 mask) internal virtual {
        _roles[operator] = mask;
    }

    function _hasRole(
        address operator,
        uint16 role
    ) internal view virtual returns (bool) {
        return _roles[operator] & role == role;
    }
}

File 6 of 6 : ERC1155.sol
// SPDX-License-Identifier: AGPL-3.0-only
pragma solidity >=0.8.0;

/// @notice Minimalist and gas efficient standard ERC1155 implementation.
/// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/tokens/ERC1155.sol)
abstract contract ERC1155 {
    /*//////////////////////////////////////////////////////////////
                                 EVENTS
    //////////////////////////////////////////////////////////////*/

    event TransferSingle(
        address indexed operator,
        address indexed from,
        address indexed to,
        uint256 id,
        uint256 amount
    );

    event TransferBatch(
        address indexed operator,
        address indexed from,
        address indexed to,
        uint256[] ids,
        uint256[] amounts
    );

    event ApprovalForAll(
        address indexed owner,
        address indexed operator,
        bool approved
    );

    event URI(string value, uint256 indexed id);

    /*//////////////////////////////////////////////////////////////
                             ERC1155 STORAGE
    //////////////////////////////////////////////////////////////*/

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

    mapping(address => mapping(address => bool)) public _isApprovedForAll;

    /*//////////////////////////////////////////////////////////////
                             METADATA LOGIC
    //////////////////////////////////////////////////////////////*/

    function uri(uint256 id) public view virtual returns (string memory);

    /*//////////////////////////////////////////////////////////////
                              ERC1155 LOGIC
    //////////////////////////////////////////////////////////////*/

    function isApprovedForAll(
        address owner,
        address operator
    ) public view virtual returns (bool) {
        return _isApprovedForAll[owner][operator];
    }

    function setApprovalForAll(address operator, bool approved) public virtual {
        _isApprovedForAll[msg.sender][operator] = approved;

        emit ApprovalForAll(msg.sender, operator, approved);
    }

    function safeTransferFrom(
        address from,
        address to,
        uint256 id,
        uint256 amount,
        bytes calldata data
    ) public virtual {
        require(
            msg.sender == from || _isApprovedForAll[from][msg.sender],
            "NOT_AUTHORIZED"
        );

        balanceOf[from][id] -= amount;
        balanceOf[to][id] += amount;

        emit TransferSingle(msg.sender, from, to, id, amount);

        require(
            to.code.length == 0
                ? to != address(0)
                : ERC1155TokenReceiver(to).onERC1155Received(
                    msg.sender,
                    from,
                    id,
                    amount,
                    data
                ) == ERC1155TokenReceiver.onERC1155Received.selector,
            "UNSAFE_RECIPIENT"
        );
    }

    function safeBatchTransferFrom(
        address from,
        address to,
        uint256[] calldata ids,
        uint256[] calldata amounts,
        bytes calldata data
    ) public virtual {
        require(ids.length == amounts.length, "LENGTH_MISMATCH");

        require(
            msg.sender == from || _isApprovedForAll[from][msg.sender],
            "NOT_AUTHORIZED"
        );

        // Storing these outside the loop saves ~15 gas per iteration.
        uint256 id;
        uint256 amount;

        for (uint256 i = 0; i < ids.length; ) {
            id = ids[i];
            amount = amounts[i];

            balanceOf[from][id] -= amount;
            balanceOf[to][id] += amount;

            // An array can't have a total length
            // larger than the max uint256 value.
            unchecked {
                ++i;
            }
        }

        emit TransferBatch(msg.sender, from, to, ids, amounts);

        require(
            to.code.length == 0
                ? to != address(0)
                : ERC1155TokenReceiver(to).onERC1155BatchReceived(
                    msg.sender,
                    from,
                    ids,
                    amounts,
                    data
                ) == ERC1155TokenReceiver.onERC1155BatchReceived.selector,
            "UNSAFE_RECIPIENT"
        );
    }

    function balanceOfBatch(
        address[] calldata owners,
        uint256[] calldata ids
    ) public view virtual returns (uint256[] memory balances) {
        require(owners.length == ids.length, "LENGTH_MISMATCH");

        balances = new uint256[](owners.length);

        // Unchecked because the only math done is incrementing
        // the array index counter which cannot possibly overflow.
        unchecked {
            for (uint256 i = 0; i < owners.length; ++i) {
                balances[i] = balanceOf[owners[i]][ids[i]];
            }
        }
    }

    /*//////////////////////////////////////////////////////////////
                              ERC165 LOGIC
    //////////////////////////////////////////////////////////////*/

    function supportsInterface(
        bytes4 interfaceId
    ) public view virtual returns (bool) {
        return
            interfaceId == 0x01ffc9a7 || // ERC165 Interface ID for ERC165
            interfaceId == 0xd9b67a26 || // ERC165 Interface ID for ERC1155
            interfaceId == 0x0e89341c; // ERC165 Interface ID for ERC1155MetadataURI
    }

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

    function _mint(
        address to,
        uint256 id,
        uint256 amount,
        bytes memory data
    ) internal virtual {
        balanceOf[to][id] += amount;

        emit TransferSingle(msg.sender, address(0), to, id, amount);

        require(
            to.code.length == 0
                ? to != address(0)
                : ERC1155TokenReceiver(to).onERC1155Received(
                    msg.sender,
                    address(0),
                    id,
                    amount,
                    data
                ) == ERC1155TokenReceiver.onERC1155Received.selector,
            "UNSAFE_RECIPIENT"
        );
    }

    function _batchMint(
        address to,
        uint256[] memory ids,
        uint256[] memory amounts,
        bytes memory data
    ) internal virtual {
        uint256 idsLength = ids.length; // Saves MLOADs.

        require(idsLength == amounts.length, "LENGTH_MISMATCH");

        for (uint256 i = 0; i < idsLength; ) {
            balanceOf[to][ids[i]] += amounts[i];

            // An array can't have a total length
            // larger than the max uint256 value.
            unchecked {
                ++i;
            }
        }

        emit TransferBatch(msg.sender, address(0), to, ids, amounts);

        require(
            to.code.length == 0
                ? to != address(0)
                : ERC1155TokenReceiver(to).onERC1155BatchReceived(
                    msg.sender,
                    address(0),
                    ids,
                    amounts,
                    data
                ) == ERC1155TokenReceiver.onERC1155BatchReceived.selector,
            "UNSAFE_RECIPIENT"
        );
    }

    function _batchBurn(
        address from,
        uint256[] memory ids,
        uint256[] memory amounts
    ) internal virtual {
        uint256 idsLength = ids.length; // Saves MLOADs.

        require(idsLength == amounts.length, "LENGTH_MISMATCH");

        for (uint256 i = 0; i < idsLength; ) {
            balanceOf[from][ids[i]] -= amounts[i];

            // An array can't have a total length
            // larger than the max uint256 value.
            unchecked {
                ++i;
            }
        }

        emit TransferBatch(msg.sender, from, address(0), ids, amounts);
    }

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

        emit TransferSingle(msg.sender, from, address(0), id, amount);
    }
}

/// @notice A generic interface for a contract which properly accepts ERC1155 tokens.
/// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/tokens/ERC1155.sol)
abstract contract ERC1155TokenReceiver {
    function onERC1155Received(
        address,
        address,
        uint256,
        uint256,
        bytes calldata
    ) external virtual returns (bytes4) {
        return ERC1155TokenReceiver.onERC1155Received.selector;
    }

    function onERC1155BatchReceived(
        address,
        address,
        uint256[] calldata,
        uint256[] calldata,
        bytes calldata
    ) external virtual returns (bytes4) {
        return ERC1155TokenReceiver.onERC1155BatchReceived.selector;
    }
}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 20000
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "libraries": {}
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"string","name":"contractURI_","type":"string"},{"internalType":"string","name":"uri_","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"uint16","name":"req","type":"uint16"},{"internalType":"address","name":"sender","type":"address"}],"name":"NotAuthorized","type":"error"},{"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":false,"internalType":"uint256","name":"_fromTokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_toTokenId","type":"uint256"}],"name":"BatchMetadataUpdate","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"MetadataUpdate","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":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[],"name":"FUNGIBLE_TOKEN_UPPER_BOUND","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ROLE_ADD_FT","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ROLE_BATCH_BURN_NFT","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ROLE_BATCH_MINT_NFT","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ROLE_BURN_FT","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ROLE_BURN_NFT","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ROLE_BYPASS_PAUSE","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ROLE_MINT_FT","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ROLE_MINT_NFT","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ROLE_MODIFY_FT","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ROLE_REFRESH_METADATA","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ROLE_SET_PAUSED","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"_isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"supplyLimit_","type":"uint256"},{"internalType":"bool","name":"canMint_","type":"bool"},{"internalType":"bool","name":"canBurn_","type":"bool"}],"name":"addFT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"owners","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"balances","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"batchBurnNFT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"batchMintNFT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"tokenID","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"}],"name":"burnFT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"tokenID","type":"uint256"}],"name":"burnNFT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint16","name":"role","type":"uint16"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenID","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"}],"name":"mintFT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenID","type":"uint256"}],"name":"mintNFT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"supplyLimit_","type":"uint256"},{"internalType":"bool","name":"canMint_","type":"bool"},{"internalType":"bool","name":"canBurn_","type":"bool"}],"name":"modifyFT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","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":"setApprovalAllowlist","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":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"string","name":"contractURI_","type":"string"},{"internalType":"string","name":"uri_","type":"string"}],"name":"setMetadata","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"b","type":"bool"}],"name":"setPaused","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint16","name":"mask","type":"uint16"}],"name":"setRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"supplyLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"id","type":"uint256"}],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"updateAllMetadata","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"updateMetadata","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}]

60806040523480156200001157600080fd5b50604051620036e2380380620036e2833981016040819052620000349162000278565b6002805460ff1916905562000049336200006f565b6200005784848484620000c9565b6200006533610fff62000115565b505050506200048c565b600280546001600160a01b03838116610100818102610100600160a81b031985161790945560405193909204169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b620000d36200014c565b6004620000e18582620003c0565b506005620000f08482620003c0565b506006620000ff8382620003c0565b5060076200010e8282620003c0565b5050505050565b6200011f6200014c565b6001600160a01b0382166000908152600360205260409020805461ffff831661ffff199091161790555050565b6002546001600160a01b03610100909104163314620001b15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640160405180910390fd5b565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620001db57600080fd5b81516001600160401b0380821115620001f857620001f8620001b3565b604051601f8301601f19908116603f01168101908282118183101715620002235762000223620001b3565b816040528381526020925086838588010111156200024057600080fd5b600091505b8382101562000264578582018301518183018401529082019062000245565b600093810190920192909252949350505050565b600080600080608085870312156200028f57600080fd5b84516001600160401b0380821115620002a757600080fd5b620002b588838901620001c9565b95506020870151915080821115620002cc57600080fd5b620002da88838901620001c9565b94506040870151915080821115620002f157600080fd5b620002ff88838901620001c9565b935060608701519150808211156200031657600080fd5b506200032587828801620001c9565b91505092959194509250565b600181811c908216806200034657607f821691505b6020821081036200036757634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620003bb57600081815260208120601f850160051c81016020861015620003965750805b601f850160051c820191505b81811015620003b757828155600101620003a2565b5050505b505050565b81516001600160401b03811115620003dc57620003dc620001b3565b620003f481620003ed845462000331565b846200036d565b602080601f8311600181146200042c5760008415620004135750858301515b600019600386901b1c1916600185901b178555620003b7565b600085815260208120601f198616915b828110156200045d578886015182559484019460019091019084016200043c565b50858210156200047c5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b613246806200049c6000396000f3fe608060405234801561001057600080fd5b50600436106102fe5760003560e01c80638da5cb5b1161019c578063de34ff35116100ee578063f0edeaff11610097578063f462a4dc11610071578063f462a4dc14610634578063ff4439c71461063c578063ffa3b59a1461064557600080fd5b8063f0edeaff146105fb578063f242432a1461060e578063f2fde38b1461062157600080fd5b8063ef5d0f7f116100c8578063ef5d0f7f146105d7578063efec9b57146105e0578063f0247150146105e857600080fd5b8063de34ff35146105a9578063e8a3d485146105bc578063e985e9c5146105c457600080fd5b8063a7abc5e411610150578063c6403c8f1161012a578063c6403c8f14610586578063cdf33d9d1461058e578063cffc08f6146105a157600080fd5b8063a7abc5e414610558578063bd85b0391461056b578063c4c5bb6a1461057e57600080fd5b80639c09628d116101815780639c09628d1461052a578063a22cb4651461053d578063a3ed9df31461055057600080fd5b80638da5cb5b146104df57806395d89b411461052257600080fd5b806338c52df0116102555780634e1273f411610209578063715018a6116101e3578063715018a6146104b157806378416adb146104b95780637b2b1da0146104cc57600080fd5b80634e1273f41461047d57806353f2e39c1461049d5780635c975abb146104a657600080fd5b806345b924f11161023a57806345b924f11461044e5780634734e13c1461045757806347fcf0181461046a57600080fd5b806338c52df0146104335780633c168eab1461043b57600080fd5b80630ee68320116102b75780632d95fdb5116102915780632d95fdb5146103d75780632eb2c2d61461040557806333a2c4901461041857600080fd5b80630ee683201461039e57806315f924a9146103b157806316c38b3c146103c457600080fd5b806306fdde03116102e857806306fdde0314610361578063090d0bc9146103765780630e89341c1461038b57600080fd5b8062fdd58e1461030357806301ffc9a71461033e575b600080fd5b61032b61031136600461270c565b600060208181529281526040808220909352908152205481565b6040519081526020015b60405180910390f35b61035161034c366004612764565b61064d565b6040519015158152602001610335565b610369610732565b60405161033591906127e5565b610389610384366004612844565b6107c0565b005b610369610399366004612897565b6109c3565b6103896103ac3660046128b0565b610a57565b6103896103bf3660046128e3565b610b97565b6103896103d2366004612931565b610bf8565b6103516103e536600461294c565b600160209081526000928352604080842090915290825290205460ff1681565b6103896104133660046129c1565b610cdd565b610420600181565b60405161ffff9091168152602001610335565b610389610d82565b61038961044936600461270c565b610df5565b61042061040081565b610389610465366004612b56565b610eff565b61038961047836600461270c565b610f3a565b61049061048b366004612c03565b611031565b6040516103359190612c6f565b61042061010081565b60025460ff16610351565b61038961118e565b61032b6104c7366004612897565b6111a2565b6103896104da366004612cb3565b6111ad565b600254610100900473ffffffffffffffffffffffffffffffffffffffff1660405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610335565b610369611355565b610389610538366004612897565b611362565b61038961054b366004612cf9565b6113b0565b610420608081565b610389610566366004612cf9565b611447565b61032b610579366004612897565b6114a5565b610420600481565b610420604081565b61035161059c3660046128e3565b6114c9565b610420602081565b6103896105b73660046128b0565b611502565b6103696116f6565b6103516105d236600461294c565b611703565b61032b61271081565b610420600281565b6103896105f6366004612cb3565b611778565b610389610609366004612844565b6118c0565b61038961061c366004612d23565b611a46565b61038961062f366004612d9b565b611abc565b610420601081565b61042061020081565b610420600881565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614806106e057507fd9b67a26000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b8061072c57507f0e89341c000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6004805461073f90612db6565b80601f016020809104026020016040519081016040528092919081815260200182805461076b90612db6565b80156107b85780601f1061078d576101008083540402835291602001916107b8565b820191906000526020600020905b81548152906001019060200180831161079b57829003601f168201915b505050505081565b60806107fa335b73ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205461ffff808416918416161490565b61085a5780335b6040517f94ac1df200000000000000000000000000000000000000000000000000000000815261ffff909216600483015273ffffffffffffffffffffffffffffffffffffffff1660248201526044015b60405180910390fd5b60005b8281101561094b57600084848381811061087957610879612e09565b90506020020135905061088d816127101190565b156108da5760405162461bcd60e51b815260206004820152601260248201527f546f6b656e2069732066756e6769626c652e00000000000000000000000000006044820152606401610851565b6000818152600a60205260409020546001146109385760405162461bcd60e51b815260206004820152601460248201527f546f6b656e206973206e6f74206d696e7465642e0000000000000000000000006044820152606401610851565b508061094381612e67565b91505061085d565b5060005b828110156109bc57600084848381811061096b5761096b612e09565b905060200201359050600b6000828152602001908152602001600020600081548092919061099890612e67565b91905055506109a986826001611b59565b50806109b481612e67565b91505061094f565b5050505050565b6060600780546109d290612db6565b80601f01602080910402602001604051908101604052809291908181526020018280546109fe90612db6565b8015610a4b5780601f10610a2057610100808354040283529160200191610a4b565b820191906000526020600020905b815481529060010190602001808311610a2e57829003601f168201915b50505050509050919050565b6020610a62336107c7565b610a6d578033610801565b610a78836127101190565b610ac45760405162461bcd60e51b815260206004820152601660248201527f546f6b656e206973206e6f742066756e6769626c652e000000000000000000006044820152606401610851565b60008381526009602052604090205460ff16610b225760405162461bcd60e51b815260206004820152601560248201527f546f6b656e2074797065206e6f742061646465642e00000000000000000000006044820152606401610851565b60008381526009602052604090205462010000900460ff16610b865760405162461bcd60e51b815260206004820152601760248201527f546f6b656e2063616e6e6f74206265206275726e65642e0000000000000000006044820152606401610851565b610b91848484611b59565b50505050565b610b9f611bf7565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260036020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff83161790555050565b5050565b610200610c04336107c7565b610c0f578033610801565b8115610c7957818015610c25575060025460ff16155b610c715760405162461bcd60e51b815260206004820152601a60248201527f436f6e747261637420697320616c7265616479207061757365640000000000006044820152606401610851565b610bf4611c64565b81158015610c89575060025460ff165b610cd55760405162461bcd60e51b815260206004820152601660248201527f436f6e7472616374206973206e6f7420706175736564000000000000000000006044820152606401610851565b610bf4611ce9565b60025460ff1615610d6857610d1c335b73ffffffffffffffffffffffffffffffffffffffff166000908152600360205260409020546104009081161490565b610d685760405162461bcd60e51b815260206004820152600f60248201527f546f6b656e2069732070617573656400000000000000000000000000000000006044820152606401610851565b610d788888888888888888611d40565b5050505050505050565b610100610d8e336107c7565b610d99578033610801565b60408051600081527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60208201527f6bd5c950a8d8df17f772f5af37cb3655737899cbf903264b9795592da439661c910160405180910390a150565b6008610e00336107c7565b610e0b578033610801565b610e16826127101190565b15610e635760405162461bcd60e51b815260206004820152601260248201527f546f6b656e2069732066756e6769626c652e00000000000000000000000000006044820152606401610851565b6000828152600a602052604090205415610ebf5760405162461bcd60e51b815260206004820152601860248201527f546f6b656e20697320616c7265616479206d696e7465642e00000000000000006044820152606401610851565b6000828152600a60205260408120805491610ed983612e67565b9190505550610efa83836001604051806020016040528060008152506120e3565b505050565b610f07611bf7565b6004610f138582612ee5565b506005610f208482612ee5565b506006610f2d8382612ee5565b5060076109bc8282612ee5565b6040610f45336107c7565b610f50578033610801565b610f5b826127101190565b15610fa85760405162461bcd60e51b815260206004820152601260248201527f546f6b656e2069732066756e6769626c652e00000000000000000000000000006044820152606401610851565b6000828152600a60205260409020546001146110065760405162461bcd60e51b815260206004820152601460248201527f546f6b656e206973206e6f74206d696e7465642e0000000000000000000000006044820152606401610851565b6000828152600b6020526040812080549161102083612e67565b9190505550610efa83836001611b59565b60608382146110825760405162461bcd60e51b815260206004820152600f60248201527f4c454e4754485f4d49534d4154434800000000000000000000000000000000006044820152606401610851565b8367ffffffffffffffff81111561109b5761109b612a7c565b6040519080825280602002602001820160405280156110c4578160200160208202803683370190505b50905060005b84811015611185576000808787848181106110e7576110e7612e09565b90506020020160208101906110fc9190612d9b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600085858481811061114a5761114a612e09565b9050602002013581526020019081526020016000205482828151811061117257611172612e09565b60209081029190910101526001016110ca565b50949350505050565b611196611bf7565b6111a060006122c7565b565b600061072c82612345565b60016111b8336107c7565b6111c3578033610801565b60008581526009602052604090205460ff16156112225760405162461bcd60e51b815260206004820152601460248201527f546f6b656e20616c72656164792061646465642e0000000000000000000000006044820152606401610851565b6040805160808101825260018082528515156020808401918252861515848601908152606085018a815260008c815260099093529582209451855493519151151562010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff921515610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff921515929092167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00009095169490941717169190911783559251910155806112f53390565b73ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62886000604051611346929190918252602082015260400190565b60405180910390a45050505050565b6005805461073f90612db6565b61010061136e336107c7565b611379578033610801565b6040518281527ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce79060200160405180910390a15050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b61144f611bf7565b73ffffffffffffffffffffffffffffffffffffffff91909116600090815260086020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b6000818152600b6020908152604080832054600a90925282205461072c9190612fff565b73ffffffffffffffffffffffffffffffffffffffff821660009081526003602052604081205461ffff80841691841616145b9392505050565b600461150d336107c7565b611518578033610801565b611523836127101190565b61156f5760405162461bcd60e51b815260206004820152601660248201527f546f6b656e206973206e6f742066756e6769626c652e000000000000000000006044820152606401610851565b60008381526009602052604090205460ff166115cd5760405162461bcd60e51b815260206004820152601560248201527f546f6b656e2074797065206e6f742061646465642e00000000000000000000006044820152606401610851565b600083815260096020526040902054610100900460ff166116305760405162461bcd60e51b815260206004820152601760248201527f546f6b656e2063616e6e6f74206265206d696e7465642e0000000000000000006044820152606401610851565b611639836111a2565b15806116665750611649836111a2565b6000848152600a6020526040902054611663908490613012565b11155b6116b25760405162461bcd60e51b815260206004820152601f60248201527f4d696e7420776f756c642065786365656420737570706c79206c696d69742e006044820152606401610851565b6116cd848484604051806020016040528060008152506120e3565b6000838152600a6020526040812080548492906116eb908490613012565b909155505050505050565b6006805461073f90612db6565b73ffffffffffffffffffffffffffffffffffffffff811660009081526008602052604081205460ff16151560010361173d5750600161072c565b73ffffffffffffffffffffffffffffffffffffffff80841660009081526001602090815260408083209386168352929052205460ff166114fb565b6002611783336107c7565b61178e578033610801565b60008581526009602052604090205460ff1615156001146117f15760405162461bcd60e51b815260206004820152601060248201527f546f6b656e206e6f742061646465642e000000000000000000000000000000006044820152606401610851565b5060408051608081018252600180825293151560208083019182529315158284019081526060830196875260009788526009909452919095209451855491519251151562010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff931515610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff921515929092167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00009093169290921717919091161783559051910155565b60106118cb336107c7565b6118d6578033610801565b60005b828110156119c55760008484838181106118f5576118f5612e09565b905060200201359050611909816127101190565b156119565760405162461bcd60e51b815260206004820152601260248201527f546f6b656e2069732066756e6769626c652e00000000000000000000000000006044820152606401610851565b6000818152600a6020526040902054156119b25760405162461bcd60e51b815260206004820152601860248201527f546f6b656e20697320616c7265616479206d696e7465642e00000000000000006044820152606401610851565b50806119bd81612e67565b9150506118d9565b5060005b828110156109bc5760008484838181106119e5576119e5612e09565b905060200201359050600a60008281526020019081526020016000206000815480929190611a1290612e67565b9190505550611a3386826001604051806020016040528060008152506120e3565b5080611a3e81612e67565b9150506119c9565b60025460ff1615611aa657611a5a33610ced565b611aa65760405162461bcd60e51b815260206004820152600f60248201527f546f6b656e2069732070617573656400000000000000000000000000000000006044820152606401610851565b611ab4868686868686612374565b505050505050565b611ac4611bf7565b73ffffffffffffffffffffffffffffffffffffffff8116611b4d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610851565b611b56816122c7565b50565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020818152604080832085845290915281208054839290611b97908490612fff565b9091555050604080518381526020810183905260009173ffffffffffffffffffffffffffffffffffffffff86169133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4505050565b60025473ffffffffffffffffffffffffffffffffffffffff6101009091041633146111a05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610851565b611c6c61263e565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611cbf3390565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b611cf1612691565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa33611cbf565b848314611d8f5760405162461bcd60e51b815260206004820152600f60248201527f4c454e4754485f4d49534d4154434800000000000000000000000000000000006044820152606401610851565b3373ffffffffffffffffffffffffffffffffffffffff89161480611de3575073ffffffffffffffffffffffffffffffffffffffff8816600090815260016020908152604080832033845290915290205460ff165b611e2f5760405162461bcd60e51b815260206004820152600e60248201527f4e4f545f415554484f52495a45440000000000000000000000000000000000006044820152606401610851565b60008060005b87811015611f0457888882818110611e4f57611e4f612e09565b905060200201359250868682818110611e6a57611e6a612e09565b73ffffffffffffffffffffffffffffffffffffffff8e1660009081526020818152604080832089845282528220805493909102949094013595508593925090611eb4908490612fff565b909155505073ffffffffffffffffffffffffffffffffffffffff8a1660009081526020818152604080832086845290915281208054849290611ef7908490613012565b9091555050600101611e35565b508873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8b8b8b8b604051611f7f9493929190613070565b60405180910390a473ffffffffffffffffffffffffffffffffffffffff89163b15612071576040517fbc197c81000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff8b169063bc197c81906120069033908f908e908e908e908e908e908e906004016130eb565b6020604051808303816000875af1158015612025573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612049919061315c565b7fffffffff00000000000000000000000000000000000000000000000000000000161461208b565b73ffffffffffffffffffffffffffffffffffffffff891615155b6120d75760405162461bcd60e51b815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152606401610851565b50505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020818152604080832086845290915281208054849290612121908490613012565b9091555050604080518481526020810184905273ffffffffffffffffffffffffffffffffffffffff86169160009133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a473ffffffffffffffffffffffffffffffffffffffff84163b15612261576040517ff23a6e61000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff86169063f23a6e61906121f6903390600090899089908990600401613179565b6020604051808303816000875af1158015612215573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612239919061315c565b7fffffffff00000000000000000000000000000000000000000000000000000000161461227b565b73ffffffffffffffffffffffffffffffffffffffff841615155b610b915760405162461bcd60e51b815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152606401610851565b6002805473ffffffffffffffffffffffffffffffffffffffff8381166101008181027fffffffffffffffffffffff0000000000000000000000000000000000000000ff85161790945560405193909204169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000612352826127101190565b61235e57506001919050565b5060009081526009602052604090206001015490565b3373ffffffffffffffffffffffffffffffffffffffff871614806123c8575073ffffffffffffffffffffffffffffffffffffffff8616600090815260016020908152604080832033845290915290205460ff165b6124145760405162461bcd60e51b815260206004820152600e60248201527f4e4f545f415554484f52495a45440000000000000000000000000000000000006044820152606401610851565b73ffffffffffffffffffffffffffffffffffffffff861660009081526020818152604080832087845290915281208054859290612452908490612fff565b909155505073ffffffffffffffffffffffffffffffffffffffff851660009081526020818152604080832087845290915281208054859290612495908490613012565b9091555050604080518581526020810185905273ffffffffffffffffffffffffffffffffffffffff808816929089169133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a473ffffffffffffffffffffffffffffffffffffffff85163b156125d8576040517ff23a6e61000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff87169063f23a6e619061256d9033908b908a908a908a908a906004016131be565b6020604051808303816000875af115801561258c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125b0919061315c565b7fffffffff0000000000000000000000000000000000000000000000000000000016146125f2565b73ffffffffffffffffffffffffffffffffffffffff851615155b611ab45760405162461bcd60e51b815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152606401610851565b60025460ff16156111a05760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610851565b60025460ff166111a05760405162461bcd60e51b815260206004820152601460248201527f5061757361626c653a206e6f74207061757365640000000000000000000000006044820152606401610851565b803573ffffffffffffffffffffffffffffffffffffffff8116811461270757600080fd5b919050565b6000806040838503121561271f57600080fd5b612728836126e3565b946020939093013593505050565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114611b5657600080fd5b60006020828403121561277657600080fd5b81356114fb81612736565b6000815180845260005b818110156127a75760208185018101518683018201520161278b565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006114fb6020830184612781565b60008083601f84011261280a57600080fd5b50813567ffffffffffffffff81111561282257600080fd5b6020830191508360208260051b850101111561283d57600080fd5b9250929050565b60008060006040848603121561285957600080fd5b612862846126e3565b9250602084013567ffffffffffffffff81111561287e57600080fd5b61288a868287016127f8565b9497909650939450505050565b6000602082840312156128a957600080fd5b5035919050565b6000806000606084860312156128c557600080fd5b6128ce846126e3565b95602085013595506040909401359392505050565b600080604083850312156128f657600080fd5b6128ff836126e3565b9150602083013561ffff8116811461291657600080fd5b809150509250929050565b8035801515811461270757600080fd5b60006020828403121561294357600080fd5b6114fb82612921565b6000806040838503121561295f57600080fd5b612968836126e3565b9150612976602084016126e3565b90509250929050565b60008083601f84011261299157600080fd5b50813567ffffffffffffffff8111156129a957600080fd5b60208301915083602082850101111561283d57600080fd5b60008060008060008060008060a0898b0312156129dd57600080fd5b6129e6896126e3565b97506129f460208a016126e3565b9650604089013567ffffffffffffffff80821115612a1157600080fd5b612a1d8c838d016127f8565b909850965060608b0135915080821115612a3657600080fd5b612a428c838d016127f8565b909650945060808b0135915080821115612a5b57600080fd5b50612a688b828c0161297f565b999c989b5096995094979396929594505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112612abc57600080fd5b813567ffffffffffffffff80821115612ad757612ad7612a7c565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715612b1d57612b1d612a7c565b81604052838152866020858801011115612b3657600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008060008060808587031215612b6c57600080fd5b843567ffffffffffffffff80821115612b8457600080fd5b612b9088838901612aab565b95506020870135915080821115612ba657600080fd5b612bb288838901612aab565b94506040870135915080821115612bc857600080fd5b612bd488838901612aab565b93506060870135915080821115612bea57600080fd5b50612bf787828801612aab565b91505092959194509250565b60008060008060408587031215612c1957600080fd5b843567ffffffffffffffff80821115612c3157600080fd5b612c3d888389016127f8565b90965094506020870135915080821115612c5657600080fd5b50612c63878288016127f8565b95989497509550505050565b6020808252825182820181905260009190848201906040850190845b81811015612ca757835183529284019291840191600101612c8b565b50909695505050505050565b60008060008060808587031215612cc957600080fd5b8435935060208501359250612ce060408601612921565b9150612cee60608601612921565b905092959194509250565b60008060408385031215612d0c57600080fd5b612d15836126e3565b915061297660208401612921565b60008060008060008060a08789031215612d3c57600080fd5b612d45876126e3565b9550612d53602088016126e3565b94506040870135935060608701359250608087013567ffffffffffffffff811115612d7d57600080fd5b612d8989828a0161297f565b979a9699509497509295939492505050565b600060208284031215612dad57600080fd5b6114fb826126e3565b600181811c90821680612dca57607f821691505b602082108103612e03577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612e9857612e98612e38565b5060010190565b601f821115610efa57600081815260208120601f850160051c81016020861015612ec65750805b601f850160051c820191505b81811015611ab457828155600101612ed2565b815167ffffffffffffffff811115612eff57612eff612a7c565b612f1381612f0d8454612db6565b84612e9f565b602080601f831160018114612f665760008415612f305750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555611ab4565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b82811015612fb357888601518255948401946001909101908401612f94565b5085821015612fef57878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b8181038181111561072c5761072c612e38565b8082018082111561072c5761072c612e38565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83111561305757600080fd5b8260051b80836020870137939093016020019392505050565b604081526000613084604083018688613025565b8281036020840152613097818587613025565b979650505050505050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff808b168352808a1660208401525060a0604083015261312560a08301888a613025565b8281036060840152613138818789613025565b9050828103608084015261314d8185876130a2565b9b9a5050505050505050505050565b60006020828403121561316e57600080fd5b81516114fb81612736565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525084604083015283606083015260a0608083015261309760a0830184612781565b600073ffffffffffffffffffffffffffffffffffffffff808916835280881660208401525085604083015284606083015260a0608083015261320460a0830184866130a2565b9897505050505050505056fea26469706673582212208ec9ae78782973d51b51b20a0014472555d68fc8e3c1b7a474b7c284a3f84e9964736f6c63430008110033000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000031486f6d65205465616d204865726f65733a204261736562616c6c203230323320436f6c6f7220506f7020496e7365727473000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f48544843504241534542414c4c32330000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002e68747470733a2f2f6d6574612e636f6c6c6563746874682e636f6d2f636f6c6f722f6f70656e7365612e6a736f6e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002668747470733a2f2f6d6574612e636f6c6c6563746874682e636f6d2f636f6c6f722f7b69647d0000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106102fe5760003560e01c80638da5cb5b1161019c578063de34ff35116100ee578063f0edeaff11610097578063f462a4dc11610071578063f462a4dc14610634578063ff4439c71461063c578063ffa3b59a1461064557600080fd5b8063f0edeaff146105fb578063f242432a1461060e578063f2fde38b1461062157600080fd5b8063ef5d0f7f116100c8578063ef5d0f7f146105d7578063efec9b57146105e0578063f0247150146105e857600080fd5b8063de34ff35146105a9578063e8a3d485146105bc578063e985e9c5146105c457600080fd5b8063a7abc5e411610150578063c6403c8f1161012a578063c6403c8f14610586578063cdf33d9d1461058e578063cffc08f6146105a157600080fd5b8063a7abc5e414610558578063bd85b0391461056b578063c4c5bb6a1461057e57600080fd5b80639c09628d116101815780639c09628d1461052a578063a22cb4651461053d578063a3ed9df31461055057600080fd5b80638da5cb5b146104df57806395d89b411461052257600080fd5b806338c52df0116102555780634e1273f411610209578063715018a6116101e3578063715018a6146104b157806378416adb146104b95780637b2b1da0146104cc57600080fd5b80634e1273f41461047d57806353f2e39c1461049d5780635c975abb146104a657600080fd5b806345b924f11161023a57806345b924f11461044e5780634734e13c1461045757806347fcf0181461046a57600080fd5b806338c52df0146104335780633c168eab1461043b57600080fd5b80630ee68320116102b75780632d95fdb5116102915780632d95fdb5146103d75780632eb2c2d61461040557806333a2c4901461041857600080fd5b80630ee683201461039e57806315f924a9146103b157806316c38b3c146103c457600080fd5b806306fdde03116102e857806306fdde0314610361578063090d0bc9146103765780630e89341c1461038b57600080fd5b8062fdd58e1461030357806301ffc9a71461033e575b600080fd5b61032b61031136600461270c565b600060208181529281526040808220909352908152205481565b6040519081526020015b60405180910390f35b61035161034c366004612764565b61064d565b6040519015158152602001610335565b610369610732565b60405161033591906127e5565b610389610384366004612844565b6107c0565b005b610369610399366004612897565b6109c3565b6103896103ac3660046128b0565b610a57565b6103896103bf3660046128e3565b610b97565b6103896103d2366004612931565b610bf8565b6103516103e536600461294c565b600160209081526000928352604080842090915290825290205460ff1681565b6103896104133660046129c1565b610cdd565b610420600181565b60405161ffff9091168152602001610335565b610389610d82565b61038961044936600461270c565b610df5565b61042061040081565b610389610465366004612b56565b610eff565b61038961047836600461270c565b610f3a565b61049061048b366004612c03565b611031565b6040516103359190612c6f565b61042061010081565b60025460ff16610351565b61038961118e565b61032b6104c7366004612897565b6111a2565b6103896104da366004612cb3565b6111ad565b600254610100900473ffffffffffffffffffffffffffffffffffffffff1660405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610335565b610369611355565b610389610538366004612897565b611362565b61038961054b366004612cf9565b6113b0565b610420608081565b610389610566366004612cf9565b611447565b61032b610579366004612897565b6114a5565b610420600481565b610420604081565b61035161059c3660046128e3565b6114c9565b610420602081565b6103896105b73660046128b0565b611502565b6103696116f6565b6103516105d236600461294c565b611703565b61032b61271081565b610420600281565b6103896105f6366004612cb3565b611778565b610389610609366004612844565b6118c0565b61038961061c366004612d23565b611a46565b61038961062f366004612d9b565b611abc565b610420601081565b61042061020081565b610420600881565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614806106e057507fd9b67a26000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b8061072c57507f0e89341c000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6004805461073f90612db6565b80601f016020809104026020016040519081016040528092919081815260200182805461076b90612db6565b80156107b85780601f1061078d576101008083540402835291602001916107b8565b820191906000526020600020905b81548152906001019060200180831161079b57829003601f168201915b505050505081565b60806107fa335b73ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205461ffff808416918416161490565b61085a5780335b6040517f94ac1df200000000000000000000000000000000000000000000000000000000815261ffff909216600483015273ffffffffffffffffffffffffffffffffffffffff1660248201526044015b60405180910390fd5b60005b8281101561094b57600084848381811061087957610879612e09565b90506020020135905061088d816127101190565b156108da5760405162461bcd60e51b815260206004820152601260248201527f546f6b656e2069732066756e6769626c652e00000000000000000000000000006044820152606401610851565b6000818152600a60205260409020546001146109385760405162461bcd60e51b815260206004820152601460248201527f546f6b656e206973206e6f74206d696e7465642e0000000000000000000000006044820152606401610851565b508061094381612e67565b91505061085d565b5060005b828110156109bc57600084848381811061096b5761096b612e09565b905060200201359050600b6000828152602001908152602001600020600081548092919061099890612e67565b91905055506109a986826001611b59565b50806109b481612e67565b91505061094f565b5050505050565b6060600780546109d290612db6565b80601f01602080910402602001604051908101604052809291908181526020018280546109fe90612db6565b8015610a4b5780601f10610a2057610100808354040283529160200191610a4b565b820191906000526020600020905b815481529060010190602001808311610a2e57829003601f168201915b50505050509050919050565b6020610a62336107c7565b610a6d578033610801565b610a78836127101190565b610ac45760405162461bcd60e51b815260206004820152601660248201527f546f6b656e206973206e6f742066756e6769626c652e000000000000000000006044820152606401610851565b60008381526009602052604090205460ff16610b225760405162461bcd60e51b815260206004820152601560248201527f546f6b656e2074797065206e6f742061646465642e00000000000000000000006044820152606401610851565b60008381526009602052604090205462010000900460ff16610b865760405162461bcd60e51b815260206004820152601760248201527f546f6b656e2063616e6e6f74206265206275726e65642e0000000000000000006044820152606401610851565b610b91848484611b59565b50505050565b610b9f611bf7565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260036020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff83161790555050565b5050565b610200610c04336107c7565b610c0f578033610801565b8115610c7957818015610c25575060025460ff16155b610c715760405162461bcd60e51b815260206004820152601a60248201527f436f6e747261637420697320616c7265616479207061757365640000000000006044820152606401610851565b610bf4611c64565b81158015610c89575060025460ff165b610cd55760405162461bcd60e51b815260206004820152601660248201527f436f6e7472616374206973206e6f7420706175736564000000000000000000006044820152606401610851565b610bf4611ce9565b60025460ff1615610d6857610d1c335b73ffffffffffffffffffffffffffffffffffffffff166000908152600360205260409020546104009081161490565b610d685760405162461bcd60e51b815260206004820152600f60248201527f546f6b656e2069732070617573656400000000000000000000000000000000006044820152606401610851565b610d788888888888888888611d40565b5050505050505050565b610100610d8e336107c7565b610d99578033610801565b60408051600081527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60208201527f6bd5c950a8d8df17f772f5af37cb3655737899cbf903264b9795592da439661c910160405180910390a150565b6008610e00336107c7565b610e0b578033610801565b610e16826127101190565b15610e635760405162461bcd60e51b815260206004820152601260248201527f546f6b656e2069732066756e6769626c652e00000000000000000000000000006044820152606401610851565b6000828152600a602052604090205415610ebf5760405162461bcd60e51b815260206004820152601860248201527f546f6b656e20697320616c7265616479206d696e7465642e00000000000000006044820152606401610851565b6000828152600a60205260408120805491610ed983612e67565b9190505550610efa83836001604051806020016040528060008152506120e3565b505050565b610f07611bf7565b6004610f138582612ee5565b506005610f208482612ee5565b506006610f2d8382612ee5565b5060076109bc8282612ee5565b6040610f45336107c7565b610f50578033610801565b610f5b826127101190565b15610fa85760405162461bcd60e51b815260206004820152601260248201527f546f6b656e2069732066756e6769626c652e00000000000000000000000000006044820152606401610851565b6000828152600a60205260409020546001146110065760405162461bcd60e51b815260206004820152601460248201527f546f6b656e206973206e6f74206d696e7465642e0000000000000000000000006044820152606401610851565b6000828152600b6020526040812080549161102083612e67565b9190505550610efa83836001611b59565b60608382146110825760405162461bcd60e51b815260206004820152600f60248201527f4c454e4754485f4d49534d4154434800000000000000000000000000000000006044820152606401610851565b8367ffffffffffffffff81111561109b5761109b612a7c565b6040519080825280602002602001820160405280156110c4578160200160208202803683370190505b50905060005b84811015611185576000808787848181106110e7576110e7612e09565b90506020020160208101906110fc9190612d9b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600085858481811061114a5761114a612e09565b9050602002013581526020019081526020016000205482828151811061117257611172612e09565b60209081029190910101526001016110ca565b50949350505050565b611196611bf7565b6111a060006122c7565b565b600061072c82612345565b60016111b8336107c7565b6111c3578033610801565b60008581526009602052604090205460ff16156112225760405162461bcd60e51b815260206004820152601460248201527f546f6b656e20616c72656164792061646465642e0000000000000000000000006044820152606401610851565b6040805160808101825260018082528515156020808401918252861515848601908152606085018a815260008c815260099093529582209451855493519151151562010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff921515610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff921515929092167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00009095169490941717169190911783559251910155806112f53390565b73ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62886000604051611346929190918252602082015260400190565b60405180910390a45050505050565b6005805461073f90612db6565b61010061136e336107c7565b611379578033610801565b6040518281527ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce79060200160405180910390a15050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b61144f611bf7565b73ffffffffffffffffffffffffffffffffffffffff91909116600090815260086020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b6000818152600b6020908152604080832054600a90925282205461072c9190612fff565b73ffffffffffffffffffffffffffffffffffffffff821660009081526003602052604081205461ffff80841691841616145b9392505050565b600461150d336107c7565b611518578033610801565b611523836127101190565b61156f5760405162461bcd60e51b815260206004820152601660248201527f546f6b656e206973206e6f742066756e6769626c652e000000000000000000006044820152606401610851565b60008381526009602052604090205460ff166115cd5760405162461bcd60e51b815260206004820152601560248201527f546f6b656e2074797065206e6f742061646465642e00000000000000000000006044820152606401610851565b600083815260096020526040902054610100900460ff166116305760405162461bcd60e51b815260206004820152601760248201527f546f6b656e2063616e6e6f74206265206d696e7465642e0000000000000000006044820152606401610851565b611639836111a2565b15806116665750611649836111a2565b6000848152600a6020526040902054611663908490613012565b11155b6116b25760405162461bcd60e51b815260206004820152601f60248201527f4d696e7420776f756c642065786365656420737570706c79206c696d69742e006044820152606401610851565b6116cd848484604051806020016040528060008152506120e3565b6000838152600a6020526040812080548492906116eb908490613012565b909155505050505050565b6006805461073f90612db6565b73ffffffffffffffffffffffffffffffffffffffff811660009081526008602052604081205460ff16151560010361173d5750600161072c565b73ffffffffffffffffffffffffffffffffffffffff80841660009081526001602090815260408083209386168352929052205460ff166114fb565b6002611783336107c7565b61178e578033610801565b60008581526009602052604090205460ff1615156001146117f15760405162461bcd60e51b815260206004820152601060248201527f546f6b656e206e6f742061646465642e000000000000000000000000000000006044820152606401610851565b5060408051608081018252600180825293151560208083019182529315158284019081526060830196875260009788526009909452919095209451855491519251151562010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff931515610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff921515929092167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00009093169290921717919091161783559051910155565b60106118cb336107c7565b6118d6578033610801565b60005b828110156119c55760008484838181106118f5576118f5612e09565b905060200201359050611909816127101190565b156119565760405162461bcd60e51b815260206004820152601260248201527f546f6b656e2069732066756e6769626c652e00000000000000000000000000006044820152606401610851565b6000818152600a6020526040902054156119b25760405162461bcd60e51b815260206004820152601860248201527f546f6b656e20697320616c7265616479206d696e7465642e00000000000000006044820152606401610851565b50806119bd81612e67565b9150506118d9565b5060005b828110156109bc5760008484838181106119e5576119e5612e09565b905060200201359050600a60008281526020019081526020016000206000815480929190611a1290612e67565b9190505550611a3386826001604051806020016040528060008152506120e3565b5080611a3e81612e67565b9150506119c9565b60025460ff1615611aa657611a5a33610ced565b611aa65760405162461bcd60e51b815260206004820152600f60248201527f546f6b656e2069732070617573656400000000000000000000000000000000006044820152606401610851565b611ab4868686868686612374565b505050505050565b611ac4611bf7565b73ffffffffffffffffffffffffffffffffffffffff8116611b4d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610851565b611b56816122c7565b50565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020818152604080832085845290915281208054839290611b97908490612fff565b9091555050604080518381526020810183905260009173ffffffffffffffffffffffffffffffffffffffff86169133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4505050565b60025473ffffffffffffffffffffffffffffffffffffffff6101009091041633146111a05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610851565b611c6c61263e565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611cbf3390565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b611cf1612691565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa33611cbf565b848314611d8f5760405162461bcd60e51b815260206004820152600f60248201527f4c454e4754485f4d49534d4154434800000000000000000000000000000000006044820152606401610851565b3373ffffffffffffffffffffffffffffffffffffffff89161480611de3575073ffffffffffffffffffffffffffffffffffffffff8816600090815260016020908152604080832033845290915290205460ff165b611e2f5760405162461bcd60e51b815260206004820152600e60248201527f4e4f545f415554484f52495a45440000000000000000000000000000000000006044820152606401610851565b60008060005b87811015611f0457888882818110611e4f57611e4f612e09565b905060200201359250868682818110611e6a57611e6a612e09565b73ffffffffffffffffffffffffffffffffffffffff8e1660009081526020818152604080832089845282528220805493909102949094013595508593925090611eb4908490612fff565b909155505073ffffffffffffffffffffffffffffffffffffffff8a1660009081526020818152604080832086845290915281208054849290611ef7908490613012565b9091555050600101611e35565b508873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8b8b8b8b604051611f7f9493929190613070565b60405180910390a473ffffffffffffffffffffffffffffffffffffffff89163b15612071576040517fbc197c81000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff8b169063bc197c81906120069033908f908e908e908e908e908e908e906004016130eb565b6020604051808303816000875af1158015612025573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612049919061315c565b7fffffffff00000000000000000000000000000000000000000000000000000000161461208b565b73ffffffffffffffffffffffffffffffffffffffff891615155b6120d75760405162461bcd60e51b815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152606401610851565b50505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020818152604080832086845290915281208054849290612121908490613012565b9091555050604080518481526020810184905273ffffffffffffffffffffffffffffffffffffffff86169160009133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a473ffffffffffffffffffffffffffffffffffffffff84163b15612261576040517ff23a6e61000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff86169063f23a6e61906121f6903390600090899089908990600401613179565b6020604051808303816000875af1158015612215573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612239919061315c565b7fffffffff00000000000000000000000000000000000000000000000000000000161461227b565b73ffffffffffffffffffffffffffffffffffffffff841615155b610b915760405162461bcd60e51b815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152606401610851565b6002805473ffffffffffffffffffffffffffffffffffffffff8381166101008181027fffffffffffffffffffffff0000000000000000000000000000000000000000ff85161790945560405193909204169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000612352826127101190565b61235e57506001919050565b5060009081526009602052604090206001015490565b3373ffffffffffffffffffffffffffffffffffffffff871614806123c8575073ffffffffffffffffffffffffffffffffffffffff8616600090815260016020908152604080832033845290915290205460ff165b6124145760405162461bcd60e51b815260206004820152600e60248201527f4e4f545f415554484f52495a45440000000000000000000000000000000000006044820152606401610851565b73ffffffffffffffffffffffffffffffffffffffff861660009081526020818152604080832087845290915281208054859290612452908490612fff565b909155505073ffffffffffffffffffffffffffffffffffffffff851660009081526020818152604080832087845290915281208054859290612495908490613012565b9091555050604080518581526020810185905273ffffffffffffffffffffffffffffffffffffffff808816929089169133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a473ffffffffffffffffffffffffffffffffffffffff85163b156125d8576040517ff23a6e61000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff87169063f23a6e619061256d9033908b908a908a908a908a906004016131be565b6020604051808303816000875af115801561258c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125b0919061315c565b7fffffffff0000000000000000000000000000000000000000000000000000000016146125f2565b73ffffffffffffffffffffffffffffffffffffffff851615155b611ab45760405162461bcd60e51b815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152606401610851565b60025460ff16156111a05760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610851565b60025460ff166111a05760405162461bcd60e51b815260206004820152601460248201527f5061757361626c653a206e6f74207061757365640000000000000000000000006044820152606401610851565b803573ffffffffffffffffffffffffffffffffffffffff8116811461270757600080fd5b919050565b6000806040838503121561271f57600080fd5b612728836126e3565b946020939093013593505050565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114611b5657600080fd5b60006020828403121561277657600080fd5b81356114fb81612736565b6000815180845260005b818110156127a75760208185018101518683018201520161278b565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006114fb6020830184612781565b60008083601f84011261280a57600080fd5b50813567ffffffffffffffff81111561282257600080fd5b6020830191508360208260051b850101111561283d57600080fd5b9250929050565b60008060006040848603121561285957600080fd5b612862846126e3565b9250602084013567ffffffffffffffff81111561287e57600080fd5b61288a868287016127f8565b9497909650939450505050565b6000602082840312156128a957600080fd5b5035919050565b6000806000606084860312156128c557600080fd5b6128ce846126e3565b95602085013595506040909401359392505050565b600080604083850312156128f657600080fd5b6128ff836126e3565b9150602083013561ffff8116811461291657600080fd5b809150509250929050565b8035801515811461270757600080fd5b60006020828403121561294357600080fd5b6114fb82612921565b6000806040838503121561295f57600080fd5b612968836126e3565b9150612976602084016126e3565b90509250929050565b60008083601f84011261299157600080fd5b50813567ffffffffffffffff8111156129a957600080fd5b60208301915083602082850101111561283d57600080fd5b60008060008060008060008060a0898b0312156129dd57600080fd5b6129e6896126e3565b97506129f460208a016126e3565b9650604089013567ffffffffffffffff80821115612a1157600080fd5b612a1d8c838d016127f8565b909850965060608b0135915080821115612a3657600080fd5b612a428c838d016127f8565b909650945060808b0135915080821115612a5b57600080fd5b50612a688b828c0161297f565b999c989b5096995094979396929594505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112612abc57600080fd5b813567ffffffffffffffff80821115612ad757612ad7612a7c565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715612b1d57612b1d612a7c565b81604052838152866020858801011115612b3657600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008060008060808587031215612b6c57600080fd5b843567ffffffffffffffff80821115612b8457600080fd5b612b9088838901612aab565b95506020870135915080821115612ba657600080fd5b612bb288838901612aab565b94506040870135915080821115612bc857600080fd5b612bd488838901612aab565b93506060870135915080821115612bea57600080fd5b50612bf787828801612aab565b91505092959194509250565b60008060008060408587031215612c1957600080fd5b843567ffffffffffffffff80821115612c3157600080fd5b612c3d888389016127f8565b90965094506020870135915080821115612c5657600080fd5b50612c63878288016127f8565b95989497509550505050565b6020808252825182820181905260009190848201906040850190845b81811015612ca757835183529284019291840191600101612c8b565b50909695505050505050565b60008060008060808587031215612cc957600080fd5b8435935060208501359250612ce060408601612921565b9150612cee60608601612921565b905092959194509250565b60008060408385031215612d0c57600080fd5b612d15836126e3565b915061297660208401612921565b60008060008060008060a08789031215612d3c57600080fd5b612d45876126e3565b9550612d53602088016126e3565b94506040870135935060608701359250608087013567ffffffffffffffff811115612d7d57600080fd5b612d8989828a0161297f565b979a9699509497509295939492505050565b600060208284031215612dad57600080fd5b6114fb826126e3565b600181811c90821680612dca57607f821691505b602082108103612e03577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612e9857612e98612e38565b5060010190565b601f821115610efa57600081815260208120601f850160051c81016020861015612ec65750805b601f850160051c820191505b81811015611ab457828155600101612ed2565b815167ffffffffffffffff811115612eff57612eff612a7c565b612f1381612f0d8454612db6565b84612e9f565b602080601f831160018114612f665760008415612f305750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555611ab4565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b82811015612fb357888601518255948401946001909101908401612f94565b5085821015612fef57878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b8181038181111561072c5761072c612e38565b8082018082111561072c5761072c612e38565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83111561305757600080fd5b8260051b80836020870137939093016020019392505050565b604081526000613084604083018688613025565b8281036020840152613097818587613025565b979650505050505050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff808b168352808a1660208401525060a0604083015261312560a08301888a613025565b8281036060840152613138818789613025565b9050828103608084015261314d8185876130a2565b9b9a5050505050505050505050565b60006020828403121561316e57600080fd5b81516114fb81612736565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525084604083015283606083015260a0608083015261309760a0830184612781565b600073ffffffffffffffffffffffffffffffffffffffff808916835280881660208401525085604083015284606083015260a0608083015261320460a0830184866130a2565b9897505050505050505056fea26469706673582212208ec9ae78782973d51b51b20a0014472555d68fc8e3c1b7a474b7c284a3f84e9964736f6c63430008110033

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

000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000031486f6d65205465616d204865726f65733a204261736562616c6c203230323320436f6c6f7220506f7020496e7365727473000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f48544843504241534542414c4c32330000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002e68747470733a2f2f6d6574612e636f6c6c6563746874682e636f6d2f636f6c6f722f6f70656e7365612e6a736f6e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002668747470733a2f2f6d6574612e636f6c6c6563746874682e636f6d2f636f6c6f722f7b69647d0000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : name_ (string): Home Team Heroes: Baseball 2023 Color Pop Inserts
Arg [1] : symbol_ (string): HTHCPBASEBALL23
Arg [2] : contractURI_ (string): https://meta.collecthth.com/color/opensea.json
Arg [3] : uri_ (string): https://meta.collecthth.com/color/{id}

-----Encoded View---------------
15 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000e0
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000120
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000180
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000031
Arg [5] : 486f6d65205465616d204865726f65733a204261736562616c6c203230323320
Arg [6] : 436f6c6f7220506f7020496e7365727473000000000000000000000000000000
Arg [7] : 000000000000000000000000000000000000000000000000000000000000000f
Arg [8] : 48544843504241534542414c4c32330000000000000000000000000000000000
Arg [9] : 000000000000000000000000000000000000000000000000000000000000002e
Arg [10] : 68747470733a2f2f6d6574612e636f6c6c6563746874682e636f6d2f636f6c6f
Arg [11] : 722f6f70656e7365612e6a736f6e000000000000000000000000000000000000
Arg [12] : 0000000000000000000000000000000000000000000000000000000000000026
Arg [13] : 68747470733a2f2f6d6574612e636f6c6c6563746874682e636f6d2f636f6c6f
Arg [14] : 722f7b69647d0000000000000000000000000000000000000000000000000000


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.