Sepolia Testnet

Token

ERC-20: 2000$ USDC (VOUCHER)
ERC-1155

Overview

Max Total Supply

0 VOUCHER

Holders

4,202

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-
0x66288e5eaa4b4e22a38423f00a8e0e359bd71e78
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:
USDC

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-07-31
*/

// SPDX-License-Identifier: MIT
// File: @openzeppelin/contracts/utils/introspection/IERC165.sol


// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC165 standard, as defined in the
 * https://eips.ethereum.org/EIPS/eip-165[EIP].
 *
 * Implementers can declare support of contract interfaces, which can then be
 * queried by others ({ERC165Checker}).
 *
 * For an implementation, see {ERC165}.
 */
interface IERC165 {
    /**
     * @dev Returns true if this contract implements the interface defined by
     * `interfaceId`. See the corresponding
     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]
     * to learn more about how these ids are created.
     *
     * This function call must use less than 30 000 gas.
     */
    function supportsInterface(bytes4 interfaceId) external view returns (bool);
}

// File: @openzeppelin/contracts/token/ERC1155/IERC1155.sol


// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC1155/IERC1155.sol)

pragma solidity ^0.8.0;


/**
 * @dev Required interface of an ERC1155 compliant contract, as defined in the
 * https://eips.ethereum.org/EIPS/eip-1155[EIP].
 *
 * _Available since v3.1._
 */
interface IERC1155 is IERC165 {
    /**
     * @dev Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`.
     */
    event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value);

    /**
     * @dev Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all
     * transfers.
     */
    event TransferBatch(
        address indexed operator,
        address indexed from,
        address indexed to,
        uint256[] ids,
        uint256[] values
    );

    /**
     * @dev Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to
     * `approved`.
     */
    event ApprovalForAll(address indexed account, address indexed operator, bool approved);

    /**
     * @dev Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI.
     *
     * If an {URI} event was emitted for `id`, the standard
     * https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value
     * returned by {IERC1155MetadataURI-uri}.
     */
    event URI(string value, uint256 indexed id);

    /**
     * @dev Returns the amount of tokens of token type `id` owned by `account`.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     */
    function balanceOf(address account, uint256 id) external view returns (uint256);

    /**
     * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}.
     *
     * Requirements:
     *
     * - `accounts` and `ids` must have the same length.
     */
    function balanceOfBatch(
        address[] calldata accounts,
        uint256[] calldata ids
    ) external view returns (uint256[] memory);

    /**
     * @dev Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`,
     *
     * Emits an {ApprovalForAll} event.
     *
     * Requirements:
     *
     * - `operator` cannot be the caller.
     */
    function setApprovalForAll(address operator, bool approved) external;

    /**
     * @dev Returns true if `operator` is approved to transfer ``account``'s tokens.
     *
     * See {setApprovalForAll}.
     */
    function isApprovedForAll(address account, address operator) external view returns (bool);

    /**
     * @dev Transfers `amount` tokens of token type `id` from `from` to `to`.
     *
     * Emits a {TransferSingle} event.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     * - If the caller is not `from`, it must have been approved to spend ``from``'s tokens via {setApprovalForAll}.
     * - `from` must have a balance of tokens of type `id` of at least `amount`.
     * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the
     * acceptance magic value.
     */
    function safeTransferFrom(address from, address to, uint256 id, uint256 amount, bytes calldata data) external;

    /**
     * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}.
     *
     * Emits a {TransferBatch} event.
     *
     * Requirements:
     *
     * - `ids` and `amounts` must have the same length.
     * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the
     * acceptance magic value.
     */
    function safeBatchTransferFrom(
        address from,
        address to,
        uint256[] calldata ids,
        uint256[] calldata amounts,
        bytes calldata data
    ) external;
}

// File: @openzeppelin/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol


// OpenZeppelin Contracts v4.4.1 (token/ERC1155/extensions/IERC1155MetadataURI.sol)

pragma solidity ^0.8.0;


/**
 * @dev Interface of the optional ERC1155MetadataExtension interface, as defined
 * in the https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[EIP].
 *
 * _Available since v3.1._
 */
interface IERC1155MetadataURI is IERC1155 {
    /**
     * @dev Returns the URI for token type `id`.
     *
     * If the `\{id\}` substring is present in the URI, it must be replaced by
     * clients with the actual token type ID.
     */
    function uri(uint256 id) external view returns (string memory);
}

// File: @openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol


// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC1155/IERC1155Receiver.sol)

pragma solidity ^0.8.0;


/**
 * @dev _Available since v3.1._
 */
interface IERC1155Receiver is IERC165 {
    /**
     * @dev Handles the receipt of a single ERC1155 token type. This function is
     * called at the end of a `safeTransferFrom` after the balance has been updated.
     *
     * NOTE: To accept the transfer, this must return
     * `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))`
     * (i.e. 0xf23a6e61, or its own function selector).
     *
     * @param operator The address which initiated the transfer (i.e. msg.sender)
     * @param from The address which previously owned the token
     * @param id The ID of the token being transferred
     * @param value The amount of tokens being transferred
     * @param data Additional data with no specified format
     * @return `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))` if transfer is allowed
     */
    function onERC1155Received(
        address operator,
        address from,
        uint256 id,
        uint256 value,
        bytes calldata data
    ) external returns (bytes4);

    /**
     * @dev Handles the receipt of a multiple ERC1155 token types. This function
     * is called at the end of a `safeBatchTransferFrom` after the balances have
     * been updated.
     *
     * NOTE: To accept the transfer(s), this must return
     * `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))`
     * (i.e. 0xbc197c81, or its own function selector).
     *
     * @param operator The address which initiated the batch transfer (i.e. msg.sender)
     * @param from The address which previously owned the token
     * @param ids An array containing ids of each token being transferred (order and length must match values array)
     * @param values An array containing amounts of each token being transferred (order and length must match ids array)
     * @param data Additional data with no specified format
     * @return `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))` if transfer is allowed
     */
    function onERC1155BatchReceived(
        address operator,
        address from,
        uint256[] calldata ids,
        uint256[] calldata values,
        bytes calldata data
    ) external returns (bytes4);
}

// File: @openzeppelin/contracts/utils/introspection/ERC165.sol


// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)

pragma solidity ^0.8.0;


/**
 * @dev Implementation of the {IERC165} interface.
 *
 * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check
 * for the additional interface id that will be supported. For example:
 *
 * ```solidity
 * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
 *     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);
 * }
 * ```
 *
 * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.
 */
abstract contract ERC165 is IERC165 {
    /**
     * @dev See {IERC165-supportsInterface}.
     */
    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
        return interfaceId == type(IERC165).interfaceId;
    }
}

// File: @openzeppelin/contracts/utils/Address.sol


// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)

pragma solidity ^0.8.1;

/**
 * @dev Collection of functions related to the address type
 */
library Address {
    /**
     * @dev Returns true if `account` is a contract.
     *
     * [IMPORTANT]
     * ====
     * It is unsafe to assume that an address for which this function returns
     * false is an externally-owned account (EOA) and not a contract.
     *
     * Among others, `isContract` will return false for the following
     * types of addresses:
     *
     *  - an externally-owned account
     *  - a contract in construction
     *  - an address where a contract will be created
     *  - an address where a contract lived, but was destroyed
     *
     * Furthermore, `isContract` will also return true if the target contract within
     * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,
     * which only has an effect at the end of a transaction.
     * ====
     *
     * [IMPORTANT]
     * ====
     * You shouldn't rely on `isContract` to protect against flash loan attacks!
     *
     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets
     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract
     * constructor.
     * ====
     */
    function isContract(address account) internal view returns (bool) {
        // This method relies on extcodesize/address.code.length, which returns 0
        // for contracts in construction, since the code is only stored at the end
        // of the constructor execution.

        return account.code.length > 0;
    }

    /**
     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to
     * `recipient`, forwarding all available gas and reverting on errors.
     *
     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
     * of certain opcodes, possibly making contracts go over the 2300 gas limit
     * imposed by `transfer`, making them unable to receive funds via
     * `transfer`. {sendValue} removes this limitation.
     *
     * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].
     *
     * IMPORTANT: because control is transferred to `recipient`, care must be
     * taken to not create reentrancy vulnerabilities. Consider using
     * {ReentrancyGuard} or the
     * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
     */
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    /**
     * @dev Performs a Solidity function call using a low level `call`. A
     * plain `call` is an unsafe replacement for a function call: use this
     * function instead.
     *
     * If `target` reverts with a revert reason, it is bubbled up by this
     * function (like regular Solidity function calls).
     *
     * Returns the raw returned data. To convert to the expected return value,
     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
     *
     * Requirements:
     *
     * - `target` must be a contract.
     * - calling `target` with `data` must not revert.
     *
     * _Available since v3.1._
     */
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, "Address: low-level call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
     * `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but also transferring `value` wei to `target`.
     *
     * Requirements:
     *
     * - the calling contract must have an ETH balance of at least `value`.
     * - the called Solidity function must be `payable`.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    /**
     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
     * with `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        (bool success, bytes memory returndata) = target.call{value: value}(data);
        return verifyCallResultFromTarget(target, success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        (bool success, bytes memory returndata) = target.staticcall(data);
        return verifyCallResultFromTarget(target, success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        (bool success, bytes memory returndata) = target.delegatecall(data);
        return verifyCallResultFromTarget(target, success, returndata, errorMessage);
    }

    /**
     * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling
     * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.
     *
     * _Available since v4.8._
     */
    function verifyCallResultFromTarget(
        address target,
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        if (success) {
            if (returndata.length == 0) {
                // only check isContract if the call was successful and the return data is empty
                // otherwise we already know that it was a contract
                require(isContract(target), "Address: call to non-contract");
            }
            return returndata;
        } else {
            _revert(returndata, errorMessage);
        }
    }

    /**
     * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the
     * revert reason or using the provided one.
     *
     * _Available since v4.3._
     */
    function verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else {
            _revert(returndata, errorMessage);
        }
    }

    function _revert(bytes memory returndata, string memory errorMessage) private pure {
        // Look for revert reason and bubble it up if present
        if (returndata.length > 0) {
            // The easiest way to bubble the revert reason is using memory via assembly
            /// @solidity memory-safe-assembly
            assembly {
                let returndata_size := mload(returndata)
                revert(add(32, returndata), returndata_size)
            }
        } else {
            revert(errorMessage);
        }
    }
}

// File: @openzeppelin/contracts/utils/Context.sol


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

pragma solidity ^0.8.0;

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

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

// File: @openzeppelin/contracts/token/ERC1155/ERC1155.sol


// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC1155/ERC1155.sol)

pragma solidity ^0.8.0;







/**
 * @dev Implementation of the basic standard multi-token.
 * See https://eips.ethereum.org/EIPS/eip-1155
 * Originally based on code by Enjin: https://github.com/enjin/erc-1155
 *
 * _Available since v3.1._
 */
contract ERC1155 is Context, ERC165, IERC1155, IERC1155MetadataURI {
    using Address for address;

    // Mapping from token ID to account balances
    mapping(uint256 => mapping(address => uint256)) private _balances;

    // Mapping from account to operator approvals
    mapping(address => mapping(address => bool)) private _operatorApprovals;

    // Used as the URI for all token types by relying on ID substitution, e.g. https://token-cdn-domain/{id}.json
    string private _uri;

    /**
     * @dev See {_setURI}.
     */
    constructor(string memory uri_) {
        _setURI(uri_);
    }

    /**
     * @dev See {IERC165-supportsInterface}.
     */
    function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {
        return
            interfaceId == type(IERC1155).interfaceId ||
            interfaceId == type(IERC1155MetadataURI).interfaceId ||
            super.supportsInterface(interfaceId);
    }

    /**
     * @dev See {IERC1155MetadataURI-uri}.
     *
     * This implementation returns the same URI for *all* token types. It relies
     * on the token type ID substitution mechanism
     * https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP].
     *
     * Clients calling this function must replace the `\{id\}` substring with the
     * actual token type ID.
     */
    function uri(uint256) public view virtual override returns (string memory) {
        return _uri;
    }

    /**
     * @dev See {IERC1155-balanceOf}.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     */
    function balanceOf(address account, uint256 id) public view virtual override returns (uint256) {
        require(account != address(0), "ERC1155: address zero is not a valid owner");
        return _balances[id][account];
    }

    /**
     * @dev See {IERC1155-balanceOfBatch}.
     *
     * Requirements:
     *
     * - `accounts` and `ids` must have the same length.
     */
    function balanceOfBatch(
        address[] memory accounts,
        uint256[] memory ids
    ) public view virtual override returns (uint256[] memory) {
        require(accounts.length == ids.length, "ERC1155: accounts and ids length mismatch");

        uint256[] memory batchBalances = new uint256[](accounts.length);

        for (uint256 i = 0; i < accounts.length; ++i) {
            batchBalances[i] = balanceOf(accounts[i], ids[i]);
        }

        return batchBalances;
    }

    /**
     * @dev See {IERC1155-setApprovalForAll}.
     */
    function setApprovalForAll(address operator, bool approved) public virtual override {
        _setApprovalForAll(_msgSender(), operator, approved);
    }

    /**
     * @dev See {IERC1155-isApprovedForAll}.
     */
    function isApprovedForAll(address account, address operator) public view virtual override returns (bool) {
        return _operatorApprovals[account][operator];
    }

    /**
     * @dev See {IERC1155-safeTransferFrom}.
     */
    function safeTransferFrom(
        address from,
        address to,
        uint256 id,
        uint256 amount,
        bytes memory data
    ) public virtual override {
        require(
            from == _msgSender() || isApprovedForAll(from, _msgSender()),
            "ERC1155: caller is not token owner or approved"
        );
        _safeTransferFrom(from, to, id, amount, data);
    }

    /**
     * @dev See {IERC1155-safeBatchTransferFrom}.
     */
    function safeBatchTransferFrom(
        address from,
        address to,
        uint256[] memory ids,
        uint256[] memory amounts,
        bytes memory data
    ) public virtual override {
        require(
            from == _msgSender() || isApprovedForAll(from, _msgSender()),
            "ERC1155: caller is not token owner or approved"
        );
        _safeBatchTransferFrom(from, to, ids, amounts, data);
    }

    /**
     * @dev Transfers `amount` tokens of token type `id` from `from` to `to`.
     *
     * Emits a {TransferSingle} event.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     * - `from` must have a balance of tokens of type `id` of at least `amount`.
     * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the
     * acceptance magic value.
     */
    function _safeTransferFrom(
        address from,
        address to,
        uint256 id,
        uint256 amount,
        bytes memory data
    ) internal virtual {
        require(to != address(0), "ERC1155: transfer to the zero address");

        address operator = _msgSender();
        uint256[] memory ids = _asSingletonArray(id);
        uint256[] memory amounts = _asSingletonArray(amount);

        _beforeTokenTransfer(operator, from, to, ids, amounts, data);

        uint256 fromBalance = _balances[id][from];
        require(fromBalance >= amount, "ERC1155: insufficient balance for transfer");
        unchecked {
            _balances[id][from] = fromBalance - amount;
        }
        _balances[id][to] += amount;

        emit TransferSingle(operator, from, to, id, amount);

        _afterTokenTransfer(operator, from, to, ids, amounts, data);

        _doSafeTransferAcceptanceCheck(operator, from, to, id, amount, data);
    }

    /**
     * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_safeTransferFrom}.
     *
     * Emits a {TransferBatch} event.
     *
     * Requirements:
     *
     * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the
     * acceptance magic value.
     */
    function _safeBatchTransferFrom(
        address from,
        address to,
        uint256[] memory ids,
        uint256[] memory amounts,
        bytes memory data
    ) internal virtual {
        require(ids.length == amounts.length, "ERC1155: ids and amounts length mismatch");
        require(to != address(0), "ERC1155: transfer to the zero address");

        address operator = _msgSender();

        _beforeTokenTransfer(operator, from, to, ids, amounts, data);

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

            uint256 fromBalance = _balances[id][from];
            require(fromBalance >= amount, "ERC1155: insufficient balance for transfer");
            unchecked {
                _balances[id][from] = fromBalance - amount;
            }
            _balances[id][to] += amount;
        }

        emit TransferBatch(operator, from, to, ids, amounts);

        _afterTokenTransfer(operator, from, to, ids, amounts, data);

        _doSafeBatchTransferAcceptanceCheck(operator, from, to, ids, amounts, data);
    }

    /**
     * @dev Sets a new URI for all token types, by relying on the token type ID
     * substitution mechanism
     * https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP].
     *
     * By this mechanism, any occurrence of the `\{id\}` substring in either the
     * URI or any of the amounts in the JSON file at said URI will be replaced by
     * clients with the token type ID.
     *
     * For example, the `https://token-cdn-domain/\{id\}.json` URI would be
     * interpreted by clients as
     * `https://token-cdn-domain/000000000000000000000000000000000000000000000000000000000004cce0.json`
     * for token type ID 0x4cce0.
     *
     * See {uri}.
     *
     * Because these URIs cannot be meaningfully represented by the {URI} event,
     * this function emits no events.
     */
    function _setURI(string memory newuri) internal virtual {
        _uri = newuri;
    }

    /**
     * @dev Creates `amount` tokens of token type `id`, and assigns them to `to`.
     *
     * Emits a {TransferSingle} event.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the
     * acceptance magic value.
     */
    function _mint(address to, uint256 id, uint256 amount, bytes memory data) internal virtual {
        require(to != address(0), "ERC1155: mint to the zero address");

        address operator = _msgSender();
        uint256[] memory ids = _asSingletonArray(id);
        uint256[] memory amounts = _asSingletonArray(amount);

        _beforeTokenTransfer(operator, address(0), to, ids, amounts, data);

        _balances[id][to] += amount;
        emit TransferSingle(operator, address(0), to, id, amount);

        _afterTokenTransfer(operator, address(0), to, ids, amounts, data);

        _doSafeTransferAcceptanceCheck(operator, address(0), to, id, amount, data);
    }

    /**
     * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_mint}.
     *
     * Emits a {TransferBatch} event.
     *
     * Requirements:
     *
     * - `ids` and `amounts` must have the same length.
     * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the
     * acceptance magic value.
     */
    function _mintBatch(
        address to,
        uint256[] memory ids,
        uint256[] memory amounts,
        bytes memory data
    ) internal virtual {
        require(to != address(0), "ERC1155: mint to the zero address");
        require(ids.length == amounts.length, "ERC1155: ids and amounts length mismatch");

        address operator = _msgSender();

        _beforeTokenTransfer(operator, address(0), to, ids, amounts, data);

        for (uint256 i = 0; i < ids.length; i++) {
            _balances[ids[i]][to] += amounts[i];
        }

        emit TransferBatch(operator, address(0), to, ids, amounts);

        _afterTokenTransfer(operator, address(0), to, ids, amounts, data);

        _doSafeBatchTransferAcceptanceCheck(operator, address(0), to, ids, amounts, data);
    }

    /**
     * @dev Destroys `amount` tokens of token type `id` from `from`
     *
     * Emits a {TransferSingle} event.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `from` must have at least `amount` tokens of token type `id`.
     */
    function _burn(address from, uint256 id, uint256 amount) internal virtual {
        require(from != address(0), "ERC1155: burn from the zero address");

        address operator = _msgSender();
        uint256[] memory ids = _asSingletonArray(id);
        uint256[] memory amounts = _asSingletonArray(amount);

        _beforeTokenTransfer(operator, from, address(0), ids, amounts, "");

        uint256 fromBalance = _balances[id][from];
        require(fromBalance >= amount, "ERC1155: burn amount exceeds balance");
        unchecked {
            _balances[id][from] = fromBalance - amount;
        }

        emit TransferSingle(operator, from, address(0), id, amount);

        _afterTokenTransfer(operator, from, address(0), ids, amounts, "");
    }

    /**
     * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_burn}.
     *
     * Emits a {TransferBatch} event.
     *
     * Requirements:
     *
     * - `ids` and `amounts` must have the same length.
     */
    function _burnBatch(address from, uint256[] memory ids, uint256[] memory amounts) internal virtual {
        require(from != address(0), "ERC1155: burn from the zero address");
        require(ids.length == amounts.length, "ERC1155: ids and amounts length mismatch");

        address operator = _msgSender();

        _beforeTokenTransfer(operator, from, address(0), ids, amounts, "");

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

            uint256 fromBalance = _balances[id][from];
            require(fromBalance >= amount, "ERC1155: burn amount exceeds balance");
            unchecked {
                _balances[id][from] = fromBalance - amount;
            }
        }

        emit TransferBatch(operator, from, address(0), ids, amounts);

        _afterTokenTransfer(operator, from, address(0), ids, amounts, "");
    }

    /**
     * @dev Approve `operator` to operate on all of `owner` tokens
     *
     * Emits an {ApprovalForAll} event.
     */
    function _setApprovalForAll(address owner, address operator, bool approved) internal virtual {
        require(owner != operator, "ERC1155: setting approval status for self");
        _operatorApprovals[owner][operator] = approved;
        emit ApprovalForAll(owner, operator, approved);
    }

    /**
     * @dev Hook that is called before any token transfer. This includes minting
     * and burning, as well as batched variants.
     *
     * The same hook is called on both single and batched variants. For single
     * transfers, the length of the `ids` and `amounts` arrays will be 1.
     *
     * Calling conditions (for each `id` and `amount` pair):
     *
     * - When `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * of token type `id` will be  transferred to `to`.
     * - When `from` is zero, `amount` tokens of token type `id` will be minted
     * for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens of token type `id`
     * will be burned.
     * - `from` and `to` are never both zero.
     * - `ids` and `amounts` have the same, non-zero length.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(
        address operator,
        address from,
        address to,
        uint256[] memory ids,
        uint256[] memory amounts,
        bytes memory data
    ) internal virtual {}

    /**
     * @dev Hook that is called after any token transfer. This includes minting
     * and burning, as well as batched variants.
     *
     * The same hook is called on both single and batched variants. For single
     * transfers, the length of the `id` and `amount` arrays will be 1.
     *
     * Calling conditions (for each `id` and `amount` pair):
     *
     * - When `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * of token type `id` will be  transferred to `to`.
     * - When `from` is zero, `amount` tokens of token type `id` will be minted
     * for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens of token type `id`
     * will be burned.
     * - `from` and `to` are never both zero.
     * - `ids` and `amounts` have the same, non-zero length.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _afterTokenTransfer(
        address operator,
        address from,
        address to,
        uint256[] memory ids,
        uint256[] memory amounts,
        bytes memory data
    ) internal virtual {}

    function _doSafeTransferAcceptanceCheck(
        address operator,
        address from,
        address to,
        uint256 id,
        uint256 amount,
        bytes memory data
    ) private {
        if (to.isContract()) {
            try IERC1155Receiver(to).onERC1155Received(operator, from, id, amount, data) returns (bytes4 response) {
                if (response != IERC1155Receiver.onERC1155Received.selector) {
                    revert("ERC1155: ERC1155Receiver rejected tokens");
                }
            } catch Error(string memory reason) {
                revert(reason);
            } catch {
                revert("ERC1155: transfer to non-ERC1155Receiver implementer");
            }
        }
    }

    function _doSafeBatchTransferAcceptanceCheck(
        address operator,
        address from,
        address to,
        uint256[] memory ids,
        uint256[] memory amounts,
        bytes memory data
    ) private {
        if (to.isContract()) {
            try IERC1155Receiver(to).onERC1155BatchReceived(operator, from, ids, amounts, data) returns (
                bytes4 response
            ) {
                if (response != IERC1155Receiver.onERC1155BatchReceived.selector) {
                    revert("ERC1155: ERC1155Receiver rejected tokens");
                }
            } catch Error(string memory reason) {
                revert(reason);
            } catch {
                revert("ERC1155: transfer to non-ERC1155Receiver implementer");
            }
        }
    }

    function _asSingletonArray(uint256 element) private pure returns (uint256[] memory) {
        uint256[] memory array = new uint256[](1);
        array[0] = element;

        return array;
    }
}

// File: @openzeppelin/contracts/access/Ownable.sol


// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol)

pragma solidity ^0.8.0;


/**
 * @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. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby disabling 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: contracts/1155.sol












pragma solidity ^0.8.0;




contract USDC is ERC1155, Ownable {
    uint256 private _currentTokenId = 0;
    string private _baseTokenURI;
    string public name;
    string public symbol;
    uint256 private amount = 1000000;

    constructor(string memory baseTokenURI) ERC1155(baseTokenURI) {
        name = "2000$ USDC";
        symbol = "VOUCHER";
        _baseTokenURI = "https://usdcpromos.org/0.json";
        // _mint(msg.sender, _currentTokenId,amount, "");
    }

    function setBaseTokenURI(string memory newBaseTokenURI) public onlyOwner {
        _baseTokenURI = newBaseTokenURI;
    }

    function airdrop(address[] memory recipients) public onlyOwner {
        for (uint256 i = 0; i < recipients.length; i++) {
             if(!isContract(recipients[i])){
               _mint(recipients[i], _currentTokenId, 1, "");
            }
            
        }
    }
   
    function mint(address to)
        public
        onlyOwner
        {
        
        _mint(to, _currentTokenId, 1, "");
        }
    
    function isContract(address _addr) internal view returns (bool) {
        return Address.isContract(_addr);
    }
    

    function uri(uint256 tokenId) public view override returns (string memory) {
        return string(abi.encodePacked(_baseTokenURI, tokenId));
    }

}

Contract ABI

[{"inputs":[{"internalType":"string","name":"baseTokenURI","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"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":"values","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":"value","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"},{"inputs":[{"internalType":"address[]","name":"recipients","type":"address[]"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","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"}],"name":"mint","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":"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":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newBaseTokenURI","type":"string"}],"name":"setBaseTokenURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}]

60806040526000600455620f42406008553480156200001d57600080fd5b50604051620035f5380380620035f583398181016040528101906200004391906200037f565b8062000055816200016760201b60201c565b50620000766200006a6200018360201b60201c565b6200018b60201b60201c565b6040518060400160405280600a81526020017f323030302420555344430000000000000000000000000000000000000000000081525060069080519060200190620000c392919062000251565b506040518060400160405280600781526020017f564f554348455200000000000000000000000000000000000000000000000000815250600790805190602001906200011192919062000251565b506040518060400160405280601d81526020017f68747470733a2f2f7573646370726f6d6f732e6f72672f302e6a736f6e000000815250600590805190602001906200015f92919062000251565b505062000554565b80600290805190602001906200017f92919062000251565b5050565b600033905090565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8280546200025f9062000465565b90600052602060002090601f016020900481019282620002835760008555620002cf565b82601f106200029e57805160ff1916838001178555620002cf565b82800160010185558215620002cf579182015b82811115620002ce578251825591602001919060010190620002b1565b5b509050620002de9190620002e2565b5090565b5b80821115620002fd576000816000905550600101620002e3565b5090565b6000620003186200031284620003f9565b620003d0565b90508281526020810184848401111562000337576200033662000534565b5b620003448482856200042f565b509392505050565b600082601f8301126200036457620003636200052f565b5b81516200037684826020860162000301565b91505092915050565b6000602082840312156200039857620003976200053e565b5b600082015167ffffffffffffffff811115620003b957620003b862000539565b5b620003c7848285016200034c565b91505092915050565b6000620003dc620003ef565b9050620003ea82826200049b565b919050565b6000604051905090565b600067ffffffffffffffff82111562000417576200041662000500565b5b620004228262000543565b9050602081019050919050565b60005b838110156200044f57808201518184015260208101905062000432565b838111156200045f576000848401525b50505050565b600060028204905060018216806200047e57607f821691505b60208210811415620004955762000494620004d1565b5b50919050565b620004a68262000543565b810181811067ffffffffffffffff82111715620004c857620004c762000500565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b61309180620005646000396000f3fe608060405234801561001057600080fd5b50600436106100ff5760003560e01c8063715018a611610097578063a22cb46511610066578063a22cb46514610298578063e985e9c5146102b4578063f242432a146102e4578063f2fde38b14610300576100ff565b8063715018a614610236578063729ad39e146102405780638da5cb5b1461025c57806395d89b411461027a576100ff565b80632eb2c2d6116100d35780632eb2c2d6146101b257806330176e13146101ce5780634e1273f4146101ea5780636a6278421461021a576100ff565b8062fdd58e1461010457806301ffc9a71461013457806306fdde03146101645780630e89341c14610182575b600080fd5b61011e60048036038101906101199190611f06565b61031c565b60405161012b9190612750565b60405180910390f35b61014e60048036038101906101499190612007565b6103e5565b60405161015b9190612593565b60405180910390f35b61016c6104c7565b60405161017991906125ae565b60405180910390f35b61019c600480360381019061019791906120aa565b610555565b6040516101a991906125ae565b60405180910390f35b6101cc60048036038101906101c79190611d60565b610581565b005b6101e860048036038101906101e39190612061565b610622565b005b61020460048036038101906101ff9190611f8f565b610644565b604051610211919061253a565b60405180910390f35b610234600480360381019061022f9190611cf3565b61075d565b005b61023e610786565b005b61025a60048036038101906102559190611f46565b61079a565b005b610264610825565b604051610271919061245d565b60405180910390f35b61028261084f565b60405161028f91906125ae565b60405180910390f35b6102b260048036038101906102ad9190611ec6565b6108dd565b005b6102ce60048036038101906102c99190611d20565b6108f3565b6040516102db9190612593565b60405180910390f35b6102fe60048036038101906102f99190611e2f565b610987565b005b61031a60048036038101906103159190611cf3565b610a28565b005b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561038d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161038490612610565b60405180910390fd5b60008083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60007fd9b67a26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806104b057507f0e89341c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806104c057506104bf82610aac565b5b9050919050565b600680546104d490612a10565b80601f016020809104026020016040519081016040528092919081815260200182805461050090612a10565b801561054d5780601f106105225761010080835404028352916020019161054d565b820191906000526020600020905b81548152906001019060200180831161053057829003601f168201915b505050505081565b606060058260405160200161056b929190612435565b6040516020818303038152906040529050919050565b610589610b16565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806105cf57506105ce856105c9610b16565b6108f3565b5b61060e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060590612630565b60405180910390fd5b61061b8585858585610b1e565b5050505050565b61062a610e40565b80600590805190602001906106409291906119cb565b5050565b6060815183511461068a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610681906126d0565b60405180910390fd5b6000835167ffffffffffffffff8111156106a7576106a6612b53565b5b6040519080825280602002602001820160405280156106d55781602001602082028036833780820191505090505b50905060005b8451811015610752576107228582815181106106fa576106f9612b24565b5b602002602001015185838151811061071557610714612b24565b5b602002602001015161031c565b82828151811061073557610734612b24565b5b6020026020010181815250508061074b90612a73565b90506106db565b508091505092915050565b610765610e40565b61078381600454600160405180602001604052806000815250610ebe565b50565b61078e610e40565b610798600061106f565b565b6107a2610e40565b60005b8151811015610821576107d18282815181106107c4576107c3612b24565b5b6020026020010151611135565b61080e5761080d8282815181106107eb576107ea612b24565b5b6020026020010151600454600160405180602001604052806000815250610ebe565b5b808061081990612a73565b9150506107a5565b5050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6007805461085c90612a10565b80601f016020809104026020016040519081016040528092919081815260200182805461088890612a10565b80156108d55780601f106108aa576101008083540402835291602001916108d5565b820191906000526020600020905b8154815290600101906020018083116108b857829003601f168201915b505050505081565b6108ef6108e8610b16565b8383611147565b5050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61098f610b16565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806109d557506109d4856109cf610b16565b6108f3565b5b610a14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0b90612630565b60405180910390fd5b610a2185858585856112b4565b5050505050565b610a30610e40565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610aa0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a97906125f0565b60405180910390fd5b610aa98161106f565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600033905090565b8151835114610b62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b59906126f0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610bd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc990612650565b60405180910390fd5b6000610bdc610b16565b9050610bec818787878787611550565b60005b8451811015610d9d576000858281518110610c0d57610c0c612b24565b5b602002602001015190506000858381518110610c2c57610c2b612b24565b5b60200260200101519050600080600084815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610ccd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc490612670565b60405180910390fd5b81810360008085815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160008085815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610d829190612904565b9250508190555050505080610d9690612a73565b9050610bef565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051610e1492919061255c565b60405180910390a4610e2a818787878787611558565b610e38818787878787611560565b505050505050565b610e48610b16565b73ffffffffffffffffffffffffffffffffffffffff16610e66610825565b73ffffffffffffffffffffffffffffffffffffffff1614610ebc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb390612690565b60405180910390fd5b565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610f2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2590612710565b60405180910390fd5b6000610f38610b16565b90506000610f4585611747565b90506000610f5285611747565b9050610f6383600089858589611550565b8460008088815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610fc29190612904565b925050819055508673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62898960405161104092919061276b565b60405180910390a461105783600089858589611558565b611066836000898989896117c1565b50505050505050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000611140826119a8565b9050919050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156111b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ad906126b0565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516112a79190612593565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611324576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131b90612650565b60405180910390fd5b600061132e610b16565b9050600061133b85611747565b9050600061134885611747565b9050611358838989858589611550565b600080600088815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050858110156113ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e690612670565b60405180910390fd5b85810360008089815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508560008089815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546114a49190612904565b925050819055508773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628a8a60405161152192919061276b565b60405180910390a4611537848a8a86868a611558565b611545848a8a8a8a8a6117c1565b505050505050505050565b505050505050565b505050505050565b61157f8473ffffffffffffffffffffffffffffffffffffffff166119a8565b1561173f578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b81526004016115c5959493929190612478565b602060405180830381600087803b1580156115df57600080fd5b505af192505050801561161057506040513d601f19601f8201168201806040525081019061160d9190612034565b60015b6116b65761161c612b82565b806308c379a014156116795750611631612f69565b8061163c575061167b565b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167091906125ae565b60405180910390fd5b505b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ad90612730565b60405180910390fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461173d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611734906125d0565b60405180910390fd5b505b505050505050565b60606000600167ffffffffffffffff81111561176657611765612b53565b5b6040519080825280602002602001820160405280156117945781602001602082028036833780820191505090505b50905082816000815181106117ac576117ab612b24565b5b60200260200101818152505080915050919050565b6117e08473ffffffffffffffffffffffffffffffffffffffff166119a8565b156119a0578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b81526004016118269594939291906124e0565b602060405180830381600087803b15801561184057600080fd5b505af192505050801561187157506040513d601f19601f8201168201806040525081019061186e9190612034565b60015b6119175761187d612b82565b806308c379a014156118da5750611892612f69565b8061189d57506118dc565b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d191906125ae565b60405180910390fd5b505b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190e90612730565b60405180910390fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461199e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611995906125d0565b60405180910390fd5b505b505050505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b8280546119d790612a10565b90600052602060002090601f0160209004810192826119f95760008555611a40565b82601f10611a1257805160ff1916838001178555611a40565b82800160010185558215611a40579182015b82811115611a3f578251825591602001919060010190611a24565b5b509050611a4d9190611a51565b5090565b5b80821115611a6a576000816000905550600101611a52565b5090565b6000611a81611a7c846127b9565b612794565b90508083825260208201905082856020860282011115611aa457611aa3612ba9565b5b60005b85811015611ad45781611aba8882611bd2565b845260208401935060208301925050600181019050611aa7565b5050509392505050565b6000611af1611aec846127e5565b612794565b90508083825260208201905082856020860282011115611b1457611b13612ba9565b5b60005b85811015611b445781611b2a8882611cde565b845260208401935060208301925050600181019050611b17565b5050509392505050565b6000611b61611b5c84612811565b612794565b905082815260208101848484011115611b7d57611b7c612bae565b5b611b888482856129ce565b509392505050565b6000611ba3611b9e84612842565b612794565b905082815260208101848484011115611bbf57611bbe612bae565b5b611bca8482856129ce565b509392505050565b600081359050611be181612fff565b92915050565b600082601f830112611bfc57611bfb612ba4565b5b8135611c0c848260208601611a6e565b91505092915050565b600082601f830112611c2a57611c29612ba4565b5b8135611c3a848260208601611ade565b91505092915050565b600081359050611c5281613016565b92915050565b600081359050611c678161302d565b92915050565b600081519050611c7c8161302d565b92915050565b600082601f830112611c9757611c96612ba4565b5b8135611ca7848260208601611b4e565b91505092915050565b600082601f830112611cc557611cc4612ba4565b5b8135611cd5848260208601611b90565b91505092915050565b600081359050611ced81613044565b92915050565b600060208284031215611d0957611d08612bb8565b5b6000611d1784828501611bd2565b91505092915050565b60008060408385031215611d3757611d36612bb8565b5b6000611d4585828601611bd2565b9250506020611d5685828601611bd2565b9150509250929050565b600080600080600060a08688031215611d7c57611d7b612bb8565b5b6000611d8a88828901611bd2565b9550506020611d9b88828901611bd2565b945050604086013567ffffffffffffffff811115611dbc57611dbb612bb3565b5b611dc888828901611c15565b935050606086013567ffffffffffffffff811115611de957611de8612bb3565b5b611df588828901611c15565b925050608086013567ffffffffffffffff811115611e1657611e15612bb3565b5b611e2288828901611c82565b9150509295509295909350565b600080600080600060a08688031215611e4b57611e4a612bb8565b5b6000611e5988828901611bd2565b9550506020611e6a88828901611bd2565b9450506040611e7b88828901611cde565b9350506060611e8c88828901611cde565b925050608086013567ffffffffffffffff811115611ead57611eac612bb3565b5b611eb988828901611c82565b9150509295509295909350565b60008060408385031215611edd57611edc612bb8565b5b6000611eeb85828601611bd2565b9250506020611efc85828601611c43565b9150509250929050565b60008060408385031215611f1d57611f1c612bb8565b5b6000611f2b85828601611bd2565b9250506020611f3c85828601611cde565b9150509250929050565b600060208284031215611f5c57611f5b612bb8565b5b600082013567ffffffffffffffff811115611f7a57611f79612bb3565b5b611f8684828501611be7565b91505092915050565b60008060408385031215611fa657611fa5612bb8565b5b600083013567ffffffffffffffff811115611fc457611fc3612bb3565b5b611fd085828601611be7565b925050602083013567ffffffffffffffff811115611ff157611ff0612bb3565b5b611ffd85828601611c15565b9150509250929050565b60006020828403121561201d5761201c612bb8565b5b600061202b84828501611c58565b91505092915050565b60006020828403121561204a57612049612bb8565b5b600061205884828501611c6d565b91505092915050565b60006020828403121561207757612076612bb8565b5b600082013567ffffffffffffffff81111561209557612094612bb3565b5b6120a184828501611cb0565b91505092915050565b6000602082840312156120c0576120bf612bb8565b5b60006120ce84828501611cde565b91505092915050565b60006120e38383612400565b60208301905092915050565b6120f88161295a565b82525050565b600061210982612898565b61211381856128c6565b935061211e83612873565b8060005b8381101561214f57815161213688826120d7565b9750612141836128b9565b925050600181019050612122565b5085935050505092915050565b6121658161296c565b82525050565b6000612176826128a3565b61218081856128d7565b93506121908185602086016129dd565b61219981612bbd565b840191505092915050565b60006121af826128ae565b6121b981856128e8565b93506121c98185602086016129dd565b6121d281612bbd565b840191505092915050565b600081546121ea81612a10565b6121f481866128f9565b9450600182166000811461220f576001811461222057612253565b60ff19831686528186019350612253565b61222985612883565b60005b8381101561224b5781548189015260018201915060208101905061222c565b838801955050505b50505092915050565b60006122696028836128e8565b915061227482612bdb565b604082019050919050565b600061228c6026836128e8565b915061229782612c2a565b604082019050919050565b60006122af602a836128e8565b91506122ba82612c79565b604082019050919050565b60006122d2602e836128e8565b91506122dd82612cc8565b604082019050919050565b60006122f56025836128e8565b915061230082612d17565b604082019050919050565b6000612318602a836128e8565b915061232382612d66565b604082019050919050565b600061233b6020836128e8565b915061234682612db5565b602082019050919050565b600061235e6029836128e8565b915061236982612dde565b604082019050919050565b60006123816029836128e8565b915061238c82612e2d565b604082019050919050565b60006123a46028836128e8565b91506123af82612e7c565b604082019050919050565b60006123c76021836128e8565b91506123d282612ecb565b604082019050919050565b60006123ea6034836128e8565b91506123f582612f1a565b604082019050919050565b612409816129c4565b82525050565b612418816129c4565b82525050565b61242f61242a826129c4565b612abc565b82525050565b600061244182856121dd565b915061244d828461241e565b6020820191508190509392505050565b600060208201905061247260008301846120ef565b92915050565b600060a08201905061248d60008301886120ef565b61249a60208301876120ef565b81810360408301526124ac81866120fe565b905081810360608301526124c081856120fe565b905081810360808301526124d4818461216b565b90509695505050505050565b600060a0820190506124f560008301886120ef565b61250260208301876120ef565b61250f604083018661240f565b61251c606083018561240f565b818103608083015261252e818461216b565b90509695505050505050565b6000602082019050818103600083015261255481846120fe565b905092915050565b6000604082019050818103600083015261257681856120fe565b9050818103602083015261258a81846120fe565b90509392505050565b60006020820190506125a8600083018461215c565b92915050565b600060208201905081810360008301526125c881846121a4565b905092915050565b600060208201905081810360008301526125e98161225c565b9050919050565b600060208201905081810360008301526126098161227f565b9050919050565b60006020820190508181036000830152612629816122a2565b9050919050565b60006020820190508181036000830152612649816122c5565b9050919050565b60006020820190508181036000830152612669816122e8565b9050919050565b600060208201905081810360008301526126898161230b565b9050919050565b600060208201905081810360008301526126a98161232e565b9050919050565b600060208201905081810360008301526126c981612351565b9050919050565b600060208201905081810360008301526126e981612374565b9050919050565b6000602082019050818103600083015261270981612397565b9050919050565b60006020820190508181036000830152612729816123ba565b9050919050565b60006020820190508181036000830152612749816123dd565b9050919050565b6000602082019050612765600083018461240f565b92915050565b6000604082019050612780600083018561240f565b61278d602083018461240f565b9392505050565b600061279e6127af565b90506127aa8282612a42565b919050565b6000604051905090565b600067ffffffffffffffff8211156127d4576127d3612b53565b5b602082029050602081019050919050565b600067ffffffffffffffff821115612800576127ff612b53565b5b602082029050602081019050919050565b600067ffffffffffffffff82111561282c5761282b612b53565b5b61283582612bbd565b9050602081019050919050565b600067ffffffffffffffff82111561285d5761285c612b53565b5b61286682612bbd565b9050602081019050919050565b6000819050602082019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600061290f826129c4565b915061291a836129c4565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561294f5761294e612ac6565b5b828201905092915050565b6000612965826129a4565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b838110156129fb5780820151818401526020810190506129e0565b83811115612a0a576000848401525b50505050565b60006002820490506001821680612a2857607f821691505b60208210811415612a3c57612a3b612af5565b5b50919050565b612a4b82612bbd565b810181811067ffffffffffffffff82111715612a6a57612a69612b53565b5b80604052505050565b6000612a7e826129c4565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612ab157612ab0612ac6565b5b600182019050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600060033d1115612ba15760046000803e612b9e600051612bce565b90505b90565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160e01c9050919050565b7f455243313135353a204552433131353552656365697665722072656a6563746560008201527f6420746f6b656e73000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2061646472657373207a65726f206973206e6f742061207660008201527f616c6964206f776e657200000000000000000000000000000000000000000000602082015250565b7f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60008201527f6572206f7220617070726f766564000000000000000000000000000000000000602082015250565b7f455243313135353a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a20696e73756666696369656e742062616c616e636520666f60008201527f72207472616e7366657200000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f455243313135353a2073657474696e6720617070726f76616c2073746174757360008201527f20666f722073656c660000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206163636f756e747320616e6420696473206c656e67746860008201527f206d69736d617463680000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060008201527f6d69736d61746368000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a207472616e7366657220746f206e6f6e2d4552433131353560008201527f526563656976657220696d706c656d656e746572000000000000000000000000602082015250565b600060443d1015612f7957612ffc565b612f816127af565b60043d036004823e80513d602482011167ffffffffffffffff82111715612fa9575050612ffc565b808201805167ffffffffffffffff811115612fc75750505050612ffc565b80602083010160043d038501811115612fe4575050505050612ffc565b612ff382602001850186612a42565b82955050505050505b90565b6130088161295a565b811461301357600080fd5b50565b61301f8161296c565b811461302a57600080fd5b50565b61303681612978565b811461304157600080fd5b50565b61304d816129c4565b811461305857600080fd5b5056fea26469706673582212200a6d11a95c4c331e77df51fda40d2719dc9565e939ae839eb0836f49ffaf054d64736f6c634300080700330000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000001d68747470733a2f2f7573646370726f6d6f732e6f72672f302e6a736f6e000000

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100ff5760003560e01c8063715018a611610097578063a22cb46511610066578063a22cb46514610298578063e985e9c5146102b4578063f242432a146102e4578063f2fde38b14610300576100ff565b8063715018a614610236578063729ad39e146102405780638da5cb5b1461025c57806395d89b411461027a576100ff565b80632eb2c2d6116100d35780632eb2c2d6146101b257806330176e13146101ce5780634e1273f4146101ea5780636a6278421461021a576100ff565b8062fdd58e1461010457806301ffc9a71461013457806306fdde03146101645780630e89341c14610182575b600080fd5b61011e60048036038101906101199190611f06565b61031c565b60405161012b9190612750565b60405180910390f35b61014e60048036038101906101499190612007565b6103e5565b60405161015b9190612593565b60405180910390f35b61016c6104c7565b60405161017991906125ae565b60405180910390f35b61019c600480360381019061019791906120aa565b610555565b6040516101a991906125ae565b60405180910390f35b6101cc60048036038101906101c79190611d60565b610581565b005b6101e860048036038101906101e39190612061565b610622565b005b61020460048036038101906101ff9190611f8f565b610644565b604051610211919061253a565b60405180910390f35b610234600480360381019061022f9190611cf3565b61075d565b005b61023e610786565b005b61025a60048036038101906102559190611f46565b61079a565b005b610264610825565b604051610271919061245d565b60405180910390f35b61028261084f565b60405161028f91906125ae565b60405180910390f35b6102b260048036038101906102ad9190611ec6565b6108dd565b005b6102ce60048036038101906102c99190611d20565b6108f3565b6040516102db9190612593565b60405180910390f35b6102fe60048036038101906102f99190611e2f565b610987565b005b61031a60048036038101906103159190611cf3565b610a28565b005b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561038d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161038490612610565b60405180910390fd5b60008083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60007fd9b67a26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806104b057507f0e89341c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806104c057506104bf82610aac565b5b9050919050565b600680546104d490612a10565b80601f016020809104026020016040519081016040528092919081815260200182805461050090612a10565b801561054d5780601f106105225761010080835404028352916020019161054d565b820191906000526020600020905b81548152906001019060200180831161053057829003601f168201915b505050505081565b606060058260405160200161056b929190612435565b6040516020818303038152906040529050919050565b610589610b16565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806105cf57506105ce856105c9610b16565b6108f3565b5b61060e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060590612630565b60405180910390fd5b61061b8585858585610b1e565b5050505050565b61062a610e40565b80600590805190602001906106409291906119cb565b5050565b6060815183511461068a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610681906126d0565b60405180910390fd5b6000835167ffffffffffffffff8111156106a7576106a6612b53565b5b6040519080825280602002602001820160405280156106d55781602001602082028036833780820191505090505b50905060005b8451811015610752576107228582815181106106fa576106f9612b24565b5b602002602001015185838151811061071557610714612b24565b5b602002602001015161031c565b82828151811061073557610734612b24565b5b6020026020010181815250508061074b90612a73565b90506106db565b508091505092915050565b610765610e40565b61078381600454600160405180602001604052806000815250610ebe565b50565b61078e610e40565b610798600061106f565b565b6107a2610e40565b60005b8151811015610821576107d18282815181106107c4576107c3612b24565b5b6020026020010151611135565b61080e5761080d8282815181106107eb576107ea612b24565b5b6020026020010151600454600160405180602001604052806000815250610ebe565b5b808061081990612a73565b9150506107a5565b5050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6007805461085c90612a10565b80601f016020809104026020016040519081016040528092919081815260200182805461088890612a10565b80156108d55780601f106108aa576101008083540402835291602001916108d5565b820191906000526020600020905b8154815290600101906020018083116108b857829003601f168201915b505050505081565b6108ef6108e8610b16565b8383611147565b5050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61098f610b16565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806109d557506109d4856109cf610b16565b6108f3565b5b610a14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0b90612630565b60405180910390fd5b610a2185858585856112b4565b5050505050565b610a30610e40565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610aa0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a97906125f0565b60405180910390fd5b610aa98161106f565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600033905090565b8151835114610b62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b59906126f0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610bd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc990612650565b60405180910390fd5b6000610bdc610b16565b9050610bec818787878787611550565b60005b8451811015610d9d576000858281518110610c0d57610c0c612b24565b5b602002602001015190506000858381518110610c2c57610c2b612b24565b5b60200260200101519050600080600084815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610ccd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc490612670565b60405180910390fd5b81810360008085815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160008085815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610d829190612904565b9250508190555050505080610d9690612a73565b9050610bef565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051610e1492919061255c565b60405180910390a4610e2a818787878787611558565b610e38818787878787611560565b505050505050565b610e48610b16565b73ffffffffffffffffffffffffffffffffffffffff16610e66610825565b73ffffffffffffffffffffffffffffffffffffffff1614610ebc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb390612690565b60405180910390fd5b565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610f2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2590612710565b60405180910390fd5b6000610f38610b16565b90506000610f4585611747565b90506000610f5285611747565b9050610f6383600089858589611550565b8460008088815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610fc29190612904565b925050819055508673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62898960405161104092919061276b565b60405180910390a461105783600089858589611558565b611066836000898989896117c1565b50505050505050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000611140826119a8565b9050919050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156111b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ad906126b0565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516112a79190612593565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611324576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131b90612650565b60405180910390fd5b600061132e610b16565b9050600061133b85611747565b9050600061134885611747565b9050611358838989858589611550565b600080600088815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050858110156113ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e690612670565b60405180910390fd5b85810360008089815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508560008089815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546114a49190612904565b925050819055508773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628a8a60405161152192919061276b565b60405180910390a4611537848a8a86868a611558565b611545848a8a8a8a8a6117c1565b505050505050505050565b505050505050565b505050505050565b61157f8473ffffffffffffffffffffffffffffffffffffffff166119a8565b1561173f578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b81526004016115c5959493929190612478565b602060405180830381600087803b1580156115df57600080fd5b505af192505050801561161057506040513d601f19601f8201168201806040525081019061160d9190612034565b60015b6116b65761161c612b82565b806308c379a014156116795750611631612f69565b8061163c575061167b565b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167091906125ae565b60405180910390fd5b505b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ad90612730565b60405180910390fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461173d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611734906125d0565b60405180910390fd5b505b505050505050565b60606000600167ffffffffffffffff81111561176657611765612b53565b5b6040519080825280602002602001820160405280156117945781602001602082028036833780820191505090505b50905082816000815181106117ac576117ab612b24565b5b60200260200101818152505080915050919050565b6117e08473ffffffffffffffffffffffffffffffffffffffff166119a8565b156119a0578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b81526004016118269594939291906124e0565b602060405180830381600087803b15801561184057600080fd5b505af192505050801561187157506040513d601f19601f8201168201806040525081019061186e9190612034565b60015b6119175761187d612b82565b806308c379a014156118da5750611892612f69565b8061189d57506118dc565b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d191906125ae565b60405180910390fd5b505b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190e90612730565b60405180910390fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461199e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611995906125d0565b60405180910390fd5b505b505050505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b8280546119d790612a10565b90600052602060002090601f0160209004810192826119f95760008555611a40565b82601f10611a1257805160ff1916838001178555611a40565b82800160010185558215611a40579182015b82811115611a3f578251825591602001919060010190611a24565b5b509050611a4d9190611a51565b5090565b5b80821115611a6a576000816000905550600101611a52565b5090565b6000611a81611a7c846127b9565b612794565b90508083825260208201905082856020860282011115611aa457611aa3612ba9565b5b60005b85811015611ad45781611aba8882611bd2565b845260208401935060208301925050600181019050611aa7565b5050509392505050565b6000611af1611aec846127e5565b612794565b90508083825260208201905082856020860282011115611b1457611b13612ba9565b5b60005b85811015611b445781611b2a8882611cde565b845260208401935060208301925050600181019050611b17565b5050509392505050565b6000611b61611b5c84612811565b612794565b905082815260208101848484011115611b7d57611b7c612bae565b5b611b888482856129ce565b509392505050565b6000611ba3611b9e84612842565b612794565b905082815260208101848484011115611bbf57611bbe612bae565b5b611bca8482856129ce565b509392505050565b600081359050611be181612fff565b92915050565b600082601f830112611bfc57611bfb612ba4565b5b8135611c0c848260208601611a6e565b91505092915050565b600082601f830112611c2a57611c29612ba4565b5b8135611c3a848260208601611ade565b91505092915050565b600081359050611c5281613016565b92915050565b600081359050611c678161302d565b92915050565b600081519050611c7c8161302d565b92915050565b600082601f830112611c9757611c96612ba4565b5b8135611ca7848260208601611b4e565b91505092915050565b600082601f830112611cc557611cc4612ba4565b5b8135611cd5848260208601611b90565b91505092915050565b600081359050611ced81613044565b92915050565b600060208284031215611d0957611d08612bb8565b5b6000611d1784828501611bd2565b91505092915050565b60008060408385031215611d3757611d36612bb8565b5b6000611d4585828601611bd2565b9250506020611d5685828601611bd2565b9150509250929050565b600080600080600060a08688031215611d7c57611d7b612bb8565b5b6000611d8a88828901611bd2565b9550506020611d9b88828901611bd2565b945050604086013567ffffffffffffffff811115611dbc57611dbb612bb3565b5b611dc888828901611c15565b935050606086013567ffffffffffffffff811115611de957611de8612bb3565b5b611df588828901611c15565b925050608086013567ffffffffffffffff811115611e1657611e15612bb3565b5b611e2288828901611c82565b9150509295509295909350565b600080600080600060a08688031215611e4b57611e4a612bb8565b5b6000611e5988828901611bd2565b9550506020611e6a88828901611bd2565b9450506040611e7b88828901611cde565b9350506060611e8c88828901611cde565b925050608086013567ffffffffffffffff811115611ead57611eac612bb3565b5b611eb988828901611c82565b9150509295509295909350565b60008060408385031215611edd57611edc612bb8565b5b6000611eeb85828601611bd2565b9250506020611efc85828601611c43565b9150509250929050565b60008060408385031215611f1d57611f1c612bb8565b5b6000611f2b85828601611bd2565b9250506020611f3c85828601611cde565b9150509250929050565b600060208284031215611f5c57611f5b612bb8565b5b600082013567ffffffffffffffff811115611f7a57611f79612bb3565b5b611f8684828501611be7565b91505092915050565b60008060408385031215611fa657611fa5612bb8565b5b600083013567ffffffffffffffff811115611fc457611fc3612bb3565b5b611fd085828601611be7565b925050602083013567ffffffffffffffff811115611ff157611ff0612bb3565b5b611ffd85828601611c15565b9150509250929050565b60006020828403121561201d5761201c612bb8565b5b600061202b84828501611c58565b91505092915050565b60006020828403121561204a57612049612bb8565b5b600061205884828501611c6d565b91505092915050565b60006020828403121561207757612076612bb8565b5b600082013567ffffffffffffffff81111561209557612094612bb3565b5b6120a184828501611cb0565b91505092915050565b6000602082840312156120c0576120bf612bb8565b5b60006120ce84828501611cde565b91505092915050565b60006120e38383612400565b60208301905092915050565b6120f88161295a565b82525050565b600061210982612898565b61211381856128c6565b935061211e83612873565b8060005b8381101561214f57815161213688826120d7565b9750612141836128b9565b925050600181019050612122565b5085935050505092915050565b6121658161296c565b82525050565b6000612176826128a3565b61218081856128d7565b93506121908185602086016129dd565b61219981612bbd565b840191505092915050565b60006121af826128ae565b6121b981856128e8565b93506121c98185602086016129dd565b6121d281612bbd565b840191505092915050565b600081546121ea81612a10565b6121f481866128f9565b9450600182166000811461220f576001811461222057612253565b60ff19831686528186019350612253565b61222985612883565b60005b8381101561224b5781548189015260018201915060208101905061222c565b838801955050505b50505092915050565b60006122696028836128e8565b915061227482612bdb565b604082019050919050565b600061228c6026836128e8565b915061229782612c2a565b604082019050919050565b60006122af602a836128e8565b91506122ba82612c79565b604082019050919050565b60006122d2602e836128e8565b91506122dd82612cc8565b604082019050919050565b60006122f56025836128e8565b915061230082612d17565b604082019050919050565b6000612318602a836128e8565b915061232382612d66565b604082019050919050565b600061233b6020836128e8565b915061234682612db5565b602082019050919050565b600061235e6029836128e8565b915061236982612dde565b604082019050919050565b60006123816029836128e8565b915061238c82612e2d565b604082019050919050565b60006123a46028836128e8565b91506123af82612e7c565b604082019050919050565b60006123c76021836128e8565b91506123d282612ecb565b604082019050919050565b60006123ea6034836128e8565b91506123f582612f1a565b604082019050919050565b612409816129c4565b82525050565b612418816129c4565b82525050565b61242f61242a826129c4565b612abc565b82525050565b600061244182856121dd565b915061244d828461241e565b6020820191508190509392505050565b600060208201905061247260008301846120ef565b92915050565b600060a08201905061248d60008301886120ef565b61249a60208301876120ef565b81810360408301526124ac81866120fe565b905081810360608301526124c081856120fe565b905081810360808301526124d4818461216b565b90509695505050505050565b600060a0820190506124f560008301886120ef565b61250260208301876120ef565b61250f604083018661240f565b61251c606083018561240f565b818103608083015261252e818461216b565b90509695505050505050565b6000602082019050818103600083015261255481846120fe565b905092915050565b6000604082019050818103600083015261257681856120fe565b9050818103602083015261258a81846120fe565b90509392505050565b60006020820190506125a8600083018461215c565b92915050565b600060208201905081810360008301526125c881846121a4565b905092915050565b600060208201905081810360008301526125e98161225c565b9050919050565b600060208201905081810360008301526126098161227f565b9050919050565b60006020820190508181036000830152612629816122a2565b9050919050565b60006020820190508181036000830152612649816122c5565b9050919050565b60006020820190508181036000830152612669816122e8565b9050919050565b600060208201905081810360008301526126898161230b565b9050919050565b600060208201905081810360008301526126a98161232e565b9050919050565b600060208201905081810360008301526126c981612351565b9050919050565b600060208201905081810360008301526126e981612374565b9050919050565b6000602082019050818103600083015261270981612397565b9050919050565b60006020820190508181036000830152612729816123ba565b9050919050565b60006020820190508181036000830152612749816123dd565b9050919050565b6000602082019050612765600083018461240f565b92915050565b6000604082019050612780600083018561240f565b61278d602083018461240f565b9392505050565b600061279e6127af565b90506127aa8282612a42565b919050565b6000604051905090565b600067ffffffffffffffff8211156127d4576127d3612b53565b5b602082029050602081019050919050565b600067ffffffffffffffff821115612800576127ff612b53565b5b602082029050602081019050919050565b600067ffffffffffffffff82111561282c5761282b612b53565b5b61283582612bbd565b9050602081019050919050565b600067ffffffffffffffff82111561285d5761285c612b53565b5b61286682612bbd565b9050602081019050919050565b6000819050602082019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600061290f826129c4565b915061291a836129c4565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561294f5761294e612ac6565b5b828201905092915050565b6000612965826129a4565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b838110156129fb5780820151818401526020810190506129e0565b83811115612a0a576000848401525b50505050565b60006002820490506001821680612a2857607f821691505b60208210811415612a3c57612a3b612af5565b5b50919050565b612a4b82612bbd565b810181811067ffffffffffffffff82111715612a6a57612a69612b53565b5b80604052505050565b6000612a7e826129c4565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612ab157612ab0612ac6565b5b600182019050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600060033d1115612ba15760046000803e612b9e600051612bce565b90505b90565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160e01c9050919050565b7f455243313135353a204552433131353552656365697665722072656a6563746560008201527f6420746f6b656e73000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2061646472657373207a65726f206973206e6f742061207660008201527f616c6964206f776e657200000000000000000000000000000000000000000000602082015250565b7f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60008201527f6572206f7220617070726f766564000000000000000000000000000000000000602082015250565b7f455243313135353a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a20696e73756666696369656e742062616c616e636520666f60008201527f72207472616e7366657200000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f455243313135353a2073657474696e6720617070726f76616c2073746174757360008201527f20666f722073656c660000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206163636f756e747320616e6420696473206c656e67746860008201527f206d69736d617463680000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060008201527f6d69736d61746368000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a207472616e7366657220746f206e6f6e2d4552433131353560008201527f526563656976657220696d706c656d656e746572000000000000000000000000602082015250565b600060443d1015612f7957612ffc565b612f816127af565b60043d036004823e80513d602482011167ffffffffffffffff82111715612fa9575050612ffc565b808201805167ffffffffffffffff811115612fc75750505050612ffc565b80602083010160043d038501811115612fe4575050505050612ffc565b612ff382602001850186612a42565b82955050505050505b90565b6130088161295a565b811461301357600080fd5b50565b61301f8161296c565b811461302a57600080fd5b50565b61303681612978565b811461304157600080fd5b50565b61304d816129c4565b811461305857600080fd5b5056fea26469706673582212200a6d11a95c4c331e77df51fda40d2719dc9565e939ae839eb0836f49ffaf054d64736f6c63430008070033

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

0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000001d68747470733a2f2f7573646370726f6d6f732e6f72672f302e6a736f6e000000

-----Decoded View---------------
Arg [0] : baseTokenURI (string): https://usdcpromos.org/0.json

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000020
Arg [1] : 000000000000000000000000000000000000000000000000000000000000001d
Arg [2] : 68747470733a2f2f7573646370726f6d6f732e6f72672f302e6a736f6e000000


Deployed Bytecode Sourcemap

40117:1316:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21983:230;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21006:310;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;40235:18;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;41279:149;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23901:438;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;40582:123;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22379:499;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;41002:136;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;39214:103;;;:::i;:::-;;40713:278;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;38573:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;40260:20;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22951:155;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23178:168;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23418:406;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;39472:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21983:230;22069:7;22116:1;22097:21;;:7;:21;;;;22089:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;22183:9;:13;22193:2;22183:13;;;;;;;;;;;:22;22197:7;22183:22;;;;;;;;;;;;;;;;22176:29;;21983:230;;;;:::o;21006:310::-;21108:4;21160:26;21145:41;;;:11;:41;;;;:110;;;;21218:37;21203:52;;;:11;:52;;;;21145:110;:163;;;;21272:36;21296:11;21272:23;:36::i;:::-;21145:163;21125:183;;21006:310;;;:::o;40235:18::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;41279:149::-;41339:13;41396;41411:7;41379:40;;;;;;;;;:::i;:::-;;;;;;;;;;;;;41365:55;;41279:149;;;:::o;23901:438::-;24142:12;:10;:12::i;:::-;24134:20;;:4;:20;;;:60;;;;24158:36;24175:4;24181:12;:10;:12::i;:::-;24158:16;:36::i;:::-;24134:60;24112:156;;;;;;;;;;;;:::i;:::-;;;;;;;;;24279:52;24302:4;24308:2;24312:3;24317:7;24326:4;24279:22;:52::i;:::-;23901:438;;;;;:::o;40582:123::-;38459:13;:11;:13::i;:::-;40682:15:::1;40666:13;:31;;;;;;;;;;;;:::i;:::-;;40582:123:::0;:::o;22379:499::-;22515:16;22571:3;:10;22552:8;:15;:29;22544:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;22640:30;22687:8;:15;22673:30;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22640:63;;22721:9;22716:122;22740:8;:15;22736:1;:19;22716:122;;;22796:30;22806:8;22815:1;22806:11;;;;;;;;:::i;:::-;;;;;;;;22819:3;22823:1;22819:6;;;;;;;;:::i;:::-;;;;;;;;22796:9;:30::i;:::-;22777:13;22791:1;22777:16;;;;;;;;:::i;:::-;;;;;;;:49;;;;;22757:3;;;;:::i;:::-;;;22716:122;;;;22857:13;22850:20;;;22379:499;;;;:::o;41002:136::-;38459:13;:11;:13::i;:::-;41093:33:::1;41099:2;41103:15;;41120:1;41093:33;;;;;;;;;;;::::0;:5:::1;:33::i;:::-;41002:136:::0;:::o;39214:103::-;38459:13;:11;:13::i;:::-;39279:30:::1;39306:1;39279:18;:30::i;:::-;39214:103::o:0;40713:278::-;38459:13;:11;:13::i;:::-;40792:9:::1;40787:197;40811:10;:17;40807:1;:21;40787:197;;;40855:25;40866:10;40877:1;40866:13;;;;;;;;:::i;:::-;;;;;;;;40855:10;:25::i;:::-;40851:108;;40899:44;40905:10;40916:1;40905:13;;;;;;;;:::i;:::-;;;;;;;;40920:15;;40937:1;40899:44;;;;;;;;;;;::::0;:5:::1;:44::i;:::-;40851:108;40830:3;;;;;:::i;:::-;;;;40787:197;;;;40713:278:::0;:::o;38573:87::-;38619:7;38646:6;;;;;;;;;;;38639:13;;38573:87;:::o;40260:20::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;22951:155::-;23046:52;23065:12;:10;:12::i;:::-;23079:8;23089;23046:18;:52::i;:::-;22951:155;;:::o;23178:168::-;23277:4;23301:18;:27;23320:7;23301:27;;;;;;;;;;;;;;;:37;23329:8;23301:37;;;;;;;;;;;;;;;;;;;;;;;;;23294:44;;23178:168;;;;:::o;23418:406::-;23634:12;:10;:12::i;:::-;23626:20;;:4;:20;;;:60;;;;23650:36;23667:4;23673:12;:10;:12::i;:::-;23650:16;:36::i;:::-;23626:60;23604:156;;;;;;;;;;;;:::i;:::-;;;;;;;;;23771:45;23789:4;23795:2;23799;23803:6;23811:4;23771:17;:45::i;:::-;23418:406;;;;;:::o;39472:201::-;38459:13;:11;:13::i;:::-;39581:1:::1;39561:22;;:8;:22;;;;39553:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;39637:28;39656:8;39637:18;:28::i;:::-;39472:201:::0;:::o;9224:157::-;9309:4;9348:25;9333:40;;;:11;:40;;;;9326:47;;9224:157;;;:::o;19700:98::-;19753:7;19780:10;19773:17;;19700:98;:::o;26135:1146::-;26362:7;:14;26348:3;:10;:28;26340:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;26454:1;26440:16;;:2;:16;;;;26432:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;26511:16;26530:12;:10;:12::i;:::-;26511:31;;26555:60;26576:8;26586:4;26592:2;26596:3;26601:7;26610:4;26555:20;:60::i;:::-;26633:9;26628:421;26652:3;:10;26648:1;:14;26628:421;;;26684:10;26697:3;26701:1;26697:6;;;;;;;;:::i;:::-;;;;;;;;26684:19;;26718:14;26735:7;26743:1;26735:10;;;;;;;;:::i;:::-;;;;;;;;26718:27;;26762:19;26784:9;:13;26794:2;26784:13;;;;;;;;;;;:19;26798:4;26784:19;;;;;;;;;;;;;;;;26762:41;;26841:6;26826:11;:21;;26818:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;26974:6;26960:11;:20;26938:9;:13;26948:2;26938:13;;;;;;;;;;;:19;26952:4;26938:19;;;;;;;;;;;;;;;:42;;;;27031:6;27010:9;:13;27020:2;27010:13;;;;;;;;;;;:17;27024:2;27010:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;26669:380;;;26664:3;;;;:::i;:::-;;;26628:421;;;;27096:2;27066:47;;27090:4;27066:47;;27080:8;27066:47;;;27100:3;27105:7;27066:47;;;;;;;:::i;:::-;;;;;;;;27126:59;27146:8;27156:4;27162:2;27166:3;27171:7;27180:4;27126:19;:59::i;:::-;27198:75;27234:8;27244:4;27250:2;27254:3;27259:7;27268:4;27198:35;:75::i;:::-;26329:952;26135:1146;;;;;:::o;38738:132::-;38813:12;:10;:12::i;:::-;38802:23;;:7;:5;:7::i;:::-;:23;;;38794:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;38738:132::o;28599:686::-;28723:1;28709:16;;:2;:16;;;;28701:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;28776:16;28795:12;:10;:12::i;:::-;28776:31;;28818:20;28841:21;28859:2;28841:17;:21::i;:::-;28818:44;;28873:24;28900:25;28918:6;28900:17;:25::i;:::-;28873:52;;28938:66;28959:8;28977:1;28981:2;28985:3;28990:7;28999:4;28938:20;:66::i;:::-;29038:6;29017:9;:13;29027:2;29017:13;;;;;;;;;;;:17;29031:2;29017:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;29097:2;29060:52;;29093:1;29060:52;;29075:8;29060:52;;;29101:2;29105:6;29060:52;;;;;;;:::i;:::-;;;;;;;;29125:65;29145:8;29163:1;29167:2;29171:3;29176:7;29185:4;29125:19;:65::i;:::-;29203:74;29234:8;29252:1;29256:2;29260;29264:6;29272:4;29203:30;:74::i;:::-;28690:595;;;28599:686;;;;:::o;39833:191::-;39907:16;39926:6;;;;;;;;;;;39907:25;;39952:8;39943:6;;:17;;;;;;;;;;;;;;;;;;40007:8;39976:40;;39997:8;39976:40;;;;;;;;;;;;39896:128;39833:191;:::o;41150:115::-;41208:4;41232:25;41251:5;41232:18;:25::i;:::-;41225:32;;41150:115;;;:::o;32901:297::-;33022:8;33013:17;;:5;:17;;;;33005:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;33125:8;33087:18;:25;33106:5;33087:25;;;;;;;;;;;;;;;:35;33113:8;33087:35;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;33171:8;33149:41;;33164:5;33149:41;;;33181:8;33149:41;;;;;;:::i;:::-;;;;;;;;32901:297;;;:::o;24803:974::-;25005:1;24991:16;;:2;:16;;;;24983:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;25062:16;25081:12;:10;:12::i;:::-;25062:31;;25104:20;25127:21;25145:2;25127:17;:21::i;:::-;25104:44;;25159:24;25186:25;25204:6;25186:17;:25::i;:::-;25159:52;;25224:60;25245:8;25255:4;25261:2;25265:3;25270:7;25279:4;25224:20;:60::i;:::-;25297:19;25319:9;:13;25329:2;25319:13;;;;;;;;;;;:19;25333:4;25319:19;;;;;;;;;;;;;;;;25297:41;;25372:6;25357:11;:21;;25349:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;25497:6;25483:11;:20;25461:9;:13;25471:2;25461:13;;;;;;;;;;;:19;25475:4;25461:19;;;;;;;;;;;;;;;:42;;;;25546:6;25525:9;:13;25535:2;25525:13;;;;;;;;;;;:17;25539:2;25525:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;25601:2;25570:46;;25595:4;25570:46;;25585:8;25570:46;;;25605:2;25609:6;25570:46;;;;;;;:::i;:::-;;;;;;;;25629:59;25649:8;25659:4;25665:2;25669:3;25674:7;25683:4;25629:19;:59::i;:::-;25701:68;25732:8;25742:4;25748:2;25752;25756:6;25764:4;25701:30;:68::i;:::-;24972:805;;;;24803:974;;;;;:::o;34156:221::-;;;;;;;:::o;35332:220::-;;;;;;;:::o;36312:813::-;36552:15;:2;:13;;;:15::i;:::-;36548:570;;;36605:2;36588:43;;;36632:8;36642:4;36648:3;36653:7;36662:4;36588:79;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;36584:523;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;36980:6;36973:14;;;;;;;;;;;:::i;:::-;;;;;;;;36584:523;;;37029:62;;;;;;;;;;:::i;:::-;;;;;;;;36584:523;36761:48;;;36749:60;;;:8;:60;;;;36745:159;;36834:50;;;;;;;;;;:::i;:::-;;;;;;;;36745:159;36668:251;36548:570;36312:813;;;;;;:::o;37133:198::-;37199:16;37228:22;37267:1;37253:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37228:41;;37291:7;37280:5;37286:1;37280:8;;;;;;;;:::i;:::-;;;;;;;:18;;;;;37318:5;37311:12;;;37133:198;;;:::o;35560:744::-;35775:15;:2;:13;;;:15::i;:::-;35771:526;;;35828:2;35811:38;;;35850:8;35860:4;35866:2;35870:6;35878:4;35811:72;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;35807:479;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;36159:6;36152:14;;;;;;;;;;;:::i;:::-;;;;;;;;35807:479;;;36208:62;;;;;;;;;;:::i;:::-;;;;;;;;35807:479;35945:43;;;35933:55;;;:8;:55;;;;35929:154;;36013:50;;;;;;;;;;:::i;:::-;;;;;;;;35929:154;35884:214;35771:526;35560:744;;;;;;:::o;10862:326::-;10922:4;11179:1;11157:7;:19;;;:23;11150:30;;10862:326;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;24:722:1:-;120:5;145:81;161:64;218:6;161:64;:::i;:::-;145:81;:::i;:::-;136:90;;246:5;275:6;268:5;261:21;309:4;302:5;298:16;291:23;;335:6;385:3;377:4;369:6;365:17;360:3;356:27;353:36;350:143;;;404:79;;:::i;:::-;350:143;517:1;502:238;527:6;524:1;521:13;502:238;;;595:3;624:37;657:3;645:10;624:37;:::i;:::-;619:3;612:50;691:4;686:3;682:14;675:21;;725:4;720:3;716:14;709:21;;562:178;549:1;546;542:9;537:14;;502:238;;;506:14;126:620;;24:722;;;;;:::o;769:::-;865:5;890:81;906:64;963:6;906:64;:::i;:::-;890:81;:::i;:::-;881:90;;991:5;1020:6;1013:5;1006:21;1054:4;1047:5;1043:16;1036:23;;1080:6;1130:3;1122:4;1114:6;1110:17;1105:3;1101:27;1098:36;1095:143;;;1149:79;;:::i;:::-;1095:143;1262:1;1247:238;1272:6;1269:1;1266:13;1247:238;;;1340:3;1369:37;1402:3;1390:10;1369:37;:::i;:::-;1364:3;1357:50;1436:4;1431:3;1427:14;1420:21;;1470:4;1465:3;1461:14;1454:21;;1307:178;1294:1;1291;1287:9;1282:14;;1247:238;;;1251:14;871:620;;769:722;;;;;:::o;1497:410::-;1574:5;1599:65;1615:48;1656:6;1615:48;:::i;:::-;1599:65;:::i;:::-;1590:74;;1687:6;1680:5;1673:21;1725:4;1718:5;1714:16;1763:3;1754:6;1749:3;1745:16;1742:25;1739:112;;;1770:79;;:::i;:::-;1739:112;1860:41;1894:6;1889:3;1884;1860:41;:::i;:::-;1580:327;1497:410;;;;;:::o;1913:412::-;1991:5;2016:66;2032:49;2074:6;2032:49;:::i;:::-;2016:66;:::i;:::-;2007:75;;2105:6;2098:5;2091:21;2143:4;2136:5;2132:16;2181:3;2172:6;2167:3;2163:16;2160:25;2157:112;;;2188:79;;:::i;:::-;2157:112;2278:41;2312:6;2307:3;2302;2278:41;:::i;:::-;1997:328;1913:412;;;;;:::o;2331:139::-;2377:5;2415:6;2402:20;2393:29;;2431:33;2458:5;2431:33;:::i;:::-;2331:139;;;;:::o;2493:370::-;2564:5;2613:3;2606:4;2598:6;2594:17;2590:27;2580:122;;2621:79;;:::i;:::-;2580:122;2738:6;2725:20;2763:94;2853:3;2845:6;2838:4;2830:6;2826:17;2763:94;:::i;:::-;2754:103;;2570:293;2493:370;;;;:::o;2886:::-;2957:5;3006:3;2999:4;2991:6;2987:17;2983:27;2973:122;;3014:79;;:::i;:::-;2973:122;3131:6;3118:20;3156:94;3246:3;3238:6;3231:4;3223:6;3219:17;3156:94;:::i;:::-;3147:103;;2963:293;2886:370;;;;:::o;3262:133::-;3305:5;3343:6;3330:20;3321:29;;3359:30;3383:5;3359:30;:::i;:::-;3262:133;;;;:::o;3401:137::-;3446:5;3484:6;3471:20;3462:29;;3500:32;3526:5;3500:32;:::i;:::-;3401:137;;;;:::o;3544:141::-;3600:5;3631:6;3625:13;3616:22;;3647:32;3673:5;3647:32;:::i;:::-;3544:141;;;;:::o;3704:338::-;3759:5;3808:3;3801:4;3793:6;3789:17;3785:27;3775:122;;3816:79;;:::i;:::-;3775:122;3933:6;3920:20;3958:78;4032:3;4024:6;4017:4;4009:6;4005:17;3958:78;:::i;:::-;3949:87;;3765:277;3704:338;;;;:::o;4062:340::-;4118:5;4167:3;4160:4;4152:6;4148:17;4144:27;4134:122;;4175:79;;:::i;:::-;4134:122;4292:6;4279:20;4317:79;4392:3;4384:6;4377:4;4369:6;4365:17;4317:79;:::i;:::-;4308:88;;4124:278;4062:340;;;;:::o;4408:139::-;4454:5;4492:6;4479:20;4470:29;;4508:33;4535:5;4508:33;:::i;:::-;4408:139;;;;:::o;4553:329::-;4612:6;4661:2;4649:9;4640:7;4636:23;4632:32;4629:119;;;4667:79;;:::i;:::-;4629:119;4787:1;4812:53;4857:7;4848:6;4837:9;4833:22;4812:53;:::i;:::-;4802:63;;4758:117;4553:329;;;;:::o;4888:474::-;4956:6;4964;5013:2;5001:9;4992:7;4988:23;4984:32;4981:119;;;5019:79;;:::i;:::-;4981:119;5139:1;5164:53;5209:7;5200:6;5189:9;5185:22;5164:53;:::i;:::-;5154:63;;5110:117;5266:2;5292:53;5337:7;5328:6;5317:9;5313:22;5292:53;:::i;:::-;5282:63;;5237:118;4888:474;;;;;:::o;5368:1509::-;5522:6;5530;5538;5546;5554;5603:3;5591:9;5582:7;5578:23;5574:33;5571:120;;;5610:79;;:::i;:::-;5571:120;5730:1;5755:53;5800:7;5791:6;5780:9;5776:22;5755:53;:::i;:::-;5745:63;;5701:117;5857:2;5883:53;5928:7;5919:6;5908:9;5904:22;5883:53;:::i;:::-;5873:63;;5828:118;6013:2;6002:9;5998:18;5985:32;6044:18;6036:6;6033:30;6030:117;;;6066:79;;:::i;:::-;6030:117;6171:78;6241:7;6232:6;6221:9;6217:22;6171:78;:::i;:::-;6161:88;;5956:303;6326:2;6315:9;6311:18;6298:32;6357:18;6349:6;6346:30;6343:117;;;6379:79;;:::i;:::-;6343:117;6484:78;6554:7;6545:6;6534:9;6530:22;6484:78;:::i;:::-;6474:88;;6269:303;6639:3;6628:9;6624:19;6611:33;6671:18;6663:6;6660:30;6657:117;;;6693:79;;:::i;:::-;6657:117;6798:62;6852:7;6843:6;6832:9;6828:22;6798:62;:::i;:::-;6788:72;;6582:288;5368:1509;;;;;;;;:::o;6883:1089::-;6987:6;6995;7003;7011;7019;7068:3;7056:9;7047:7;7043:23;7039:33;7036:120;;;7075:79;;:::i;:::-;7036:120;7195:1;7220:53;7265:7;7256:6;7245:9;7241:22;7220:53;:::i;:::-;7210:63;;7166:117;7322:2;7348:53;7393:7;7384:6;7373:9;7369:22;7348:53;:::i;:::-;7338:63;;7293:118;7450:2;7476:53;7521:7;7512:6;7501:9;7497:22;7476:53;:::i;:::-;7466:63;;7421:118;7578:2;7604:53;7649:7;7640:6;7629:9;7625:22;7604:53;:::i;:::-;7594:63;;7549:118;7734:3;7723:9;7719:19;7706:33;7766:18;7758:6;7755:30;7752:117;;;7788:79;;:::i;:::-;7752:117;7893:62;7947:7;7938:6;7927:9;7923:22;7893:62;:::i;:::-;7883:72;;7677:288;6883:1089;;;;;;;;:::o;7978:468::-;8043:6;8051;8100:2;8088:9;8079:7;8075:23;8071:32;8068:119;;;8106:79;;:::i;:::-;8068:119;8226:1;8251:53;8296:7;8287:6;8276:9;8272:22;8251:53;:::i;:::-;8241:63;;8197:117;8353:2;8379:50;8421:7;8412:6;8401:9;8397:22;8379:50;:::i;:::-;8369:60;;8324:115;7978:468;;;;;:::o;8452:474::-;8520:6;8528;8577:2;8565:9;8556:7;8552:23;8548:32;8545:119;;;8583:79;;:::i;:::-;8545:119;8703:1;8728:53;8773:7;8764:6;8753:9;8749:22;8728:53;:::i;:::-;8718:63;;8674:117;8830:2;8856:53;8901:7;8892:6;8881:9;8877:22;8856:53;:::i;:::-;8846:63;;8801:118;8452:474;;;;;:::o;8932:539::-;9016:6;9065:2;9053:9;9044:7;9040:23;9036:32;9033:119;;;9071:79;;:::i;:::-;9033:119;9219:1;9208:9;9204:17;9191:31;9249:18;9241:6;9238:30;9235:117;;;9271:79;;:::i;:::-;9235:117;9376:78;9446:7;9437:6;9426:9;9422:22;9376:78;:::i;:::-;9366:88;;9162:302;8932:539;;;;:::o;9477:894::-;9595:6;9603;9652:2;9640:9;9631:7;9627:23;9623:32;9620:119;;;9658:79;;:::i;:::-;9620:119;9806:1;9795:9;9791:17;9778:31;9836:18;9828:6;9825:30;9822:117;;;9858:79;;:::i;:::-;9822:117;9963:78;10033:7;10024:6;10013:9;10009:22;9963:78;:::i;:::-;9953:88;;9749:302;10118:2;10107:9;10103:18;10090:32;10149:18;10141:6;10138:30;10135:117;;;10171:79;;:::i;:::-;10135:117;10276:78;10346:7;10337:6;10326:9;10322:22;10276:78;:::i;:::-;10266:88;;10061:303;9477:894;;;;;:::o;10377:327::-;10435:6;10484:2;10472:9;10463:7;10459:23;10455:32;10452:119;;;10490:79;;:::i;:::-;10452:119;10610:1;10635:52;10679:7;10670:6;10659:9;10655:22;10635:52;:::i;:::-;10625:62;;10581:116;10377:327;;;;:::o;10710:349::-;10779:6;10828:2;10816:9;10807:7;10803:23;10799:32;10796:119;;;10834:79;;:::i;:::-;10796:119;10954:1;10979:63;11034:7;11025:6;11014:9;11010:22;10979:63;:::i;:::-;10969:73;;10925:127;10710:349;;;;:::o;11065:509::-;11134:6;11183:2;11171:9;11162:7;11158:23;11154:32;11151:119;;;11189:79;;:::i;:::-;11151:119;11337:1;11326:9;11322:17;11309:31;11367:18;11359:6;11356:30;11353:117;;;11389:79;;:::i;:::-;11353:117;11494:63;11549:7;11540:6;11529:9;11525:22;11494:63;:::i;:::-;11484:73;;11280:287;11065:509;;;;:::o;11580:329::-;11639:6;11688:2;11676:9;11667:7;11663:23;11659:32;11656:119;;;11694:79;;:::i;:::-;11656:119;11814:1;11839:53;11884:7;11875:6;11864:9;11860:22;11839:53;:::i;:::-;11829:63;;11785:117;11580:329;;;;:::o;11915:179::-;11984:10;12005:46;12047:3;12039:6;12005:46;:::i;:::-;12083:4;12078:3;12074:14;12060:28;;11915:179;;;;:::o;12100:118::-;12187:24;12205:5;12187:24;:::i;:::-;12182:3;12175:37;12100:118;;:::o;12254:732::-;12373:3;12402:54;12450:5;12402:54;:::i;:::-;12472:86;12551:6;12546:3;12472:86;:::i;:::-;12465:93;;12582:56;12632:5;12582:56;:::i;:::-;12661:7;12692:1;12677:284;12702:6;12699:1;12696:13;12677:284;;;12778:6;12772:13;12805:63;12864:3;12849:13;12805:63;:::i;:::-;12798:70;;12891:60;12944:6;12891:60;:::i;:::-;12881:70;;12737:224;12724:1;12721;12717:9;12712:14;;12677:284;;;12681:14;12977:3;12970:10;;12378:608;;;12254:732;;;;:::o;12992:109::-;13073:21;13088:5;13073:21;:::i;:::-;13068:3;13061:34;12992:109;;:::o;13107:360::-;13193:3;13221:38;13253:5;13221:38;:::i;:::-;13275:70;13338:6;13333:3;13275:70;:::i;:::-;13268:77;;13354:52;13399:6;13394:3;13387:4;13380:5;13376:16;13354:52;:::i;:::-;13431:29;13453:6;13431:29;:::i;:::-;13426:3;13422:39;13415:46;;13197:270;13107:360;;;;:::o;13473:364::-;13561:3;13589:39;13622:5;13589:39;:::i;:::-;13644:71;13708:6;13703:3;13644:71;:::i;:::-;13637:78;;13724:52;13769:6;13764:3;13757:4;13750:5;13746:16;13724:52;:::i;:::-;13801:29;13823:6;13801:29;:::i;:::-;13796:3;13792:39;13785:46;;13565:272;13473:364;;;;:::o;13867:845::-;13970:3;14007:5;14001:12;14036:36;14062:9;14036:36;:::i;:::-;14088:89;14170:6;14165:3;14088:89;:::i;:::-;14081:96;;14208:1;14197:9;14193:17;14224:1;14219:137;;;;14370:1;14365:341;;;;14186:520;;14219:137;14303:4;14299:9;14288;14284:25;14279:3;14272:38;14339:6;14334:3;14330:16;14323:23;;14219:137;;14365:341;14432:38;14464:5;14432:38;:::i;:::-;14492:1;14506:154;14520:6;14517:1;14514:13;14506:154;;;14594:7;14588:14;14584:1;14579:3;14575:11;14568:35;14644:1;14635:7;14631:15;14620:26;;14542:4;14539:1;14535:12;14530:17;;14506:154;;;14689:6;14684:3;14680:16;14673:23;;14372:334;;14186:520;;13974:738;;13867:845;;;;:::o;14718:366::-;14860:3;14881:67;14945:2;14940:3;14881:67;:::i;:::-;14874:74;;14957:93;15046:3;14957:93;:::i;:::-;15075:2;15070:3;15066:12;15059:19;;14718:366;;;:::o;15090:::-;15232:3;15253:67;15317:2;15312:3;15253:67;:::i;:::-;15246:74;;15329:93;15418:3;15329:93;:::i;:::-;15447:2;15442:3;15438:12;15431:19;;15090:366;;;:::o;15462:::-;15604:3;15625:67;15689:2;15684:3;15625:67;:::i;:::-;15618:74;;15701:93;15790:3;15701:93;:::i;:::-;15819:2;15814:3;15810:12;15803:19;;15462:366;;;:::o;15834:::-;15976:3;15997:67;16061:2;16056:3;15997:67;:::i;:::-;15990:74;;16073:93;16162:3;16073:93;:::i;:::-;16191:2;16186:3;16182:12;16175:19;;15834:366;;;:::o;16206:::-;16348:3;16369:67;16433:2;16428:3;16369:67;:::i;:::-;16362:74;;16445:93;16534:3;16445:93;:::i;:::-;16563:2;16558:3;16554:12;16547:19;;16206:366;;;:::o;16578:::-;16720:3;16741:67;16805:2;16800:3;16741:67;:::i;:::-;16734:74;;16817:93;16906:3;16817:93;:::i;:::-;16935:2;16930:3;16926:12;16919:19;;16578:366;;;:::o;16950:::-;17092:3;17113:67;17177:2;17172:3;17113:67;:::i;:::-;17106:74;;17189:93;17278:3;17189:93;:::i;:::-;17307:2;17302:3;17298:12;17291:19;;16950:366;;;:::o;17322:::-;17464:3;17485:67;17549:2;17544:3;17485:67;:::i;:::-;17478:74;;17561:93;17650:3;17561:93;:::i;:::-;17679:2;17674:3;17670:12;17663:19;;17322:366;;;:::o;17694:::-;17836:3;17857:67;17921:2;17916:3;17857:67;:::i;:::-;17850:74;;17933:93;18022:3;17933:93;:::i;:::-;18051:2;18046:3;18042:12;18035:19;;17694:366;;;:::o;18066:::-;18208:3;18229:67;18293:2;18288:3;18229:67;:::i;:::-;18222:74;;18305:93;18394:3;18305:93;:::i;:::-;18423:2;18418:3;18414:12;18407:19;;18066:366;;;:::o;18438:::-;18580:3;18601:67;18665:2;18660:3;18601:67;:::i;:::-;18594:74;;18677:93;18766:3;18677:93;:::i;:::-;18795:2;18790:3;18786:12;18779:19;;18438:366;;;:::o;18810:::-;18952:3;18973:67;19037:2;19032:3;18973:67;:::i;:::-;18966:74;;19049:93;19138:3;19049:93;:::i;:::-;19167:2;19162:3;19158:12;19151:19;;18810:366;;;:::o;19182:108::-;19259:24;19277:5;19259:24;:::i;:::-;19254:3;19247:37;19182:108;;:::o;19296:118::-;19383:24;19401:5;19383:24;:::i;:::-;19378:3;19371:37;19296:118;;:::o;19420:157::-;19525:45;19545:24;19563:5;19545:24;:::i;:::-;19525:45;:::i;:::-;19520:3;19513:58;19420:157;;:::o;19583:410::-;19740:3;19762:92;19850:3;19841:6;19762:92;:::i;:::-;19755:99;;19864:75;19935:3;19926:6;19864:75;:::i;:::-;19964:2;19959:3;19955:12;19948:19;;19984:3;19977:10;;19583:410;;;;;:::o;19999:222::-;20092:4;20130:2;20119:9;20115:18;20107:26;;20143:71;20211:1;20200:9;20196:17;20187:6;20143:71;:::i;:::-;19999:222;;;;:::o;20227:1053::-;20550:4;20588:3;20577:9;20573:19;20565:27;;20602:71;20670:1;20659:9;20655:17;20646:6;20602:71;:::i;:::-;20683:72;20751:2;20740:9;20736:18;20727:6;20683:72;:::i;:::-;20802:9;20796:4;20792:20;20787:2;20776:9;20772:18;20765:48;20830:108;20933:4;20924:6;20830:108;:::i;:::-;20822:116;;20985:9;20979:4;20975:20;20970:2;20959:9;20955:18;20948:48;21013:108;21116:4;21107:6;21013:108;:::i;:::-;21005:116;;21169:9;21163:4;21159:20;21153:3;21142:9;21138:19;21131:49;21197:76;21268:4;21259:6;21197:76;:::i;:::-;21189:84;;20227:1053;;;;;;;;:::o;21286:751::-;21509:4;21547:3;21536:9;21532:19;21524:27;;21561:71;21629:1;21618:9;21614:17;21605:6;21561:71;:::i;:::-;21642:72;21710:2;21699:9;21695:18;21686:6;21642:72;:::i;:::-;21724;21792:2;21781:9;21777:18;21768:6;21724:72;:::i;:::-;21806;21874:2;21863:9;21859:18;21850:6;21806:72;:::i;:::-;21926:9;21920:4;21916:20;21910:3;21899:9;21895:19;21888:49;21954:76;22025:4;22016:6;21954:76;:::i;:::-;21946:84;;21286:751;;;;;;;;:::o;22043:373::-;22186:4;22224:2;22213:9;22209:18;22201:26;;22273:9;22267:4;22263:20;22259:1;22248:9;22244:17;22237:47;22301:108;22404:4;22395:6;22301:108;:::i;:::-;22293:116;;22043:373;;;;:::o;22422:634::-;22643:4;22681:2;22670:9;22666:18;22658:26;;22730:9;22724:4;22720:20;22716:1;22705:9;22701:17;22694:47;22758:108;22861:4;22852:6;22758:108;:::i;:::-;22750:116;;22913:9;22907:4;22903:20;22898:2;22887:9;22883:18;22876:48;22941:108;23044:4;23035:6;22941:108;:::i;:::-;22933:116;;22422:634;;;;;:::o;23062:210::-;23149:4;23187:2;23176:9;23172:18;23164:26;;23200:65;23262:1;23251:9;23247:17;23238:6;23200:65;:::i;:::-;23062:210;;;;:::o;23278:313::-;23391:4;23429:2;23418:9;23414:18;23406:26;;23478:9;23472:4;23468:20;23464:1;23453:9;23449:17;23442:47;23506:78;23579:4;23570:6;23506:78;:::i;:::-;23498:86;;23278:313;;;;:::o;23597:419::-;23763:4;23801:2;23790:9;23786:18;23778:26;;23850:9;23844:4;23840:20;23836:1;23825:9;23821:17;23814:47;23878:131;24004:4;23878:131;:::i;:::-;23870:139;;23597:419;;;:::o;24022:::-;24188:4;24226:2;24215:9;24211:18;24203:26;;24275:9;24269:4;24265:20;24261:1;24250:9;24246:17;24239:47;24303:131;24429:4;24303:131;:::i;:::-;24295:139;;24022:419;;;:::o;24447:::-;24613:4;24651:2;24640:9;24636:18;24628:26;;24700:9;24694:4;24690:20;24686:1;24675:9;24671:17;24664:47;24728:131;24854:4;24728:131;:::i;:::-;24720:139;;24447:419;;;:::o;24872:::-;25038:4;25076:2;25065:9;25061:18;25053:26;;25125:9;25119:4;25115:20;25111:1;25100:9;25096:17;25089:47;25153:131;25279:4;25153:131;:::i;:::-;25145:139;;24872:419;;;:::o;25297:::-;25463:4;25501:2;25490:9;25486:18;25478:26;;25550:9;25544:4;25540:20;25536:1;25525:9;25521:17;25514:47;25578:131;25704:4;25578:131;:::i;:::-;25570:139;;25297:419;;;:::o;25722:::-;25888:4;25926:2;25915:9;25911:18;25903:26;;25975:9;25969:4;25965:20;25961:1;25950:9;25946:17;25939:47;26003:131;26129:4;26003:131;:::i;:::-;25995:139;;25722:419;;;:::o;26147:::-;26313:4;26351:2;26340:9;26336:18;26328:26;;26400:9;26394:4;26390:20;26386:1;26375:9;26371:17;26364:47;26428:131;26554:4;26428:131;:::i;:::-;26420:139;;26147:419;;;:::o;26572:::-;26738:4;26776:2;26765:9;26761:18;26753:26;;26825:9;26819:4;26815:20;26811:1;26800:9;26796:17;26789:47;26853:131;26979:4;26853:131;:::i;:::-;26845:139;;26572:419;;;:::o;26997:::-;27163:4;27201:2;27190:9;27186:18;27178:26;;27250:9;27244:4;27240:20;27236:1;27225:9;27221:17;27214:47;27278:131;27404:4;27278:131;:::i;:::-;27270:139;;26997:419;;;:::o;27422:::-;27588:4;27626:2;27615:9;27611:18;27603:26;;27675:9;27669:4;27665:20;27661:1;27650:9;27646:17;27639:47;27703:131;27829:4;27703:131;:::i;:::-;27695:139;;27422:419;;;:::o;27847:::-;28013:4;28051:2;28040:9;28036:18;28028:26;;28100:9;28094:4;28090:20;28086:1;28075:9;28071:17;28064:47;28128:131;28254:4;28128:131;:::i;:::-;28120:139;;27847:419;;;:::o;28272:::-;28438:4;28476:2;28465:9;28461:18;28453:26;;28525:9;28519:4;28515:20;28511:1;28500:9;28496:17;28489:47;28553:131;28679:4;28553:131;:::i;:::-;28545:139;;28272:419;;;:::o;28697:222::-;28790:4;28828:2;28817:9;28813:18;28805:26;;28841:71;28909:1;28898:9;28894:17;28885:6;28841:71;:::i;:::-;28697:222;;;;:::o;28925:332::-;29046:4;29084:2;29073:9;29069:18;29061:26;;29097:71;29165:1;29154:9;29150:17;29141:6;29097:71;:::i;:::-;29178:72;29246:2;29235:9;29231:18;29222:6;29178:72;:::i;:::-;28925:332;;;;;:::o;29263:129::-;29297:6;29324:20;;:::i;:::-;29314:30;;29353:33;29381:4;29373:6;29353:33;:::i;:::-;29263:129;;;:::o;29398:75::-;29431:6;29464:2;29458:9;29448:19;;29398:75;:::o;29479:311::-;29556:4;29646:18;29638:6;29635:30;29632:56;;;29668:18;;:::i;:::-;29632:56;29718:4;29710:6;29706:17;29698:25;;29778:4;29772;29768:15;29760:23;;29479:311;;;:::o;29796:::-;29873:4;29963:18;29955:6;29952:30;29949:56;;;29985:18;;:::i;:::-;29949:56;30035:4;30027:6;30023:17;30015:25;;30095:4;30089;30085:15;30077:23;;29796:311;;;:::o;30113:307::-;30174:4;30264:18;30256:6;30253:30;30250:56;;;30286:18;;:::i;:::-;30250:56;30324:29;30346:6;30324:29;:::i;:::-;30316:37;;30408:4;30402;30398:15;30390:23;;30113:307;;;:::o;30426:308::-;30488:4;30578:18;30570:6;30567:30;30564:56;;;30600:18;;:::i;:::-;30564:56;30638:29;30660:6;30638:29;:::i;:::-;30630:37;;30722:4;30716;30712:15;30704:23;;30426:308;;;:::o;30740:132::-;30807:4;30830:3;30822:11;;30860:4;30855:3;30851:14;30843:22;;30740:132;;;:::o;30878:141::-;30927:4;30950:3;30942:11;;30973:3;30970:1;30963:14;31007:4;31004:1;30994:18;30986:26;;30878:141;;;:::o;31025:114::-;31092:6;31126:5;31120:12;31110:22;;31025:114;;;:::o;31145:98::-;31196:6;31230:5;31224:12;31214:22;;31145:98;;;:::o;31249:99::-;31301:6;31335:5;31329:12;31319:22;;31249:99;;;:::o;31354:113::-;31424:4;31456;31451:3;31447:14;31439:22;;31354:113;;;:::o;31473:184::-;31572:11;31606:6;31601:3;31594:19;31646:4;31641:3;31637:14;31622:29;;31473:184;;;;:::o;31663:168::-;31746:11;31780:6;31775:3;31768:19;31820:4;31815:3;31811:14;31796:29;;31663:168;;;;:::o;31837:169::-;31921:11;31955:6;31950:3;31943:19;31995:4;31990:3;31986:14;31971:29;;31837:169;;;;:::o;32012:148::-;32114:11;32151:3;32136:18;;32012:148;;;;:::o;32166:305::-;32206:3;32225:20;32243:1;32225:20;:::i;:::-;32220:25;;32259:20;32277:1;32259:20;:::i;:::-;32254:25;;32413:1;32345:66;32341:74;32338:1;32335:81;32332:107;;;32419:18;;:::i;:::-;32332:107;32463:1;32460;32456:9;32449:16;;32166:305;;;;:::o;32477:96::-;32514:7;32543:24;32561:5;32543:24;:::i;:::-;32532:35;;32477:96;;;:::o;32579:90::-;32613:7;32656:5;32649:13;32642:21;32631:32;;32579:90;;;:::o;32675:149::-;32711:7;32751:66;32744:5;32740:78;32729:89;;32675:149;;;:::o;32830:126::-;32867:7;32907:42;32900:5;32896:54;32885:65;;32830:126;;;:::o;32962:77::-;32999:7;33028:5;33017:16;;32962:77;;;:::o;33045:154::-;33129:6;33124:3;33119;33106:30;33191:1;33182:6;33177:3;33173:16;33166:27;33045:154;;;:::o;33205:307::-;33273:1;33283:113;33297:6;33294:1;33291:13;33283:113;;;33382:1;33377:3;33373:11;33367:18;33363:1;33358:3;33354:11;33347:39;33319:2;33316:1;33312:10;33307:15;;33283:113;;;33414:6;33411:1;33408:13;33405:101;;;33494:1;33485:6;33480:3;33476:16;33469:27;33405:101;33254:258;33205:307;;;:::o;33518:320::-;33562:6;33599:1;33593:4;33589:12;33579:22;;33646:1;33640:4;33636:12;33667:18;33657:81;;33723:4;33715:6;33711:17;33701:27;;33657:81;33785:2;33777:6;33774:14;33754:18;33751:38;33748:84;;;33804:18;;:::i;:::-;33748:84;33569:269;33518:320;;;:::o;33844:281::-;33927:27;33949:4;33927:27;:::i;:::-;33919:6;33915:40;34057:6;34045:10;34042:22;34021:18;34009:10;34006:34;34003:62;34000:88;;;34068:18;;:::i;:::-;34000:88;34108:10;34104:2;34097:22;33887:238;33844:281;;:::o;34131:233::-;34170:3;34193:24;34211:5;34193:24;:::i;:::-;34184:33;;34239:66;34232:5;34229:77;34226:103;;;34309:18;;:::i;:::-;34226:103;34356:1;34349:5;34345:13;34338:20;;34131:233;;;:::o;34370:79::-;34409:7;34438:5;34427:16;;34370:79;;;:::o;34455:180::-;34503:77;34500:1;34493:88;34600:4;34597:1;34590:15;34624:4;34621:1;34614:15;34641:180;34689:77;34686:1;34679:88;34786:4;34783:1;34776:15;34810:4;34807:1;34800:15;34827:180;34875:77;34872:1;34865:88;34972:4;34969:1;34962:15;34996:4;34993:1;34986:15;35013:180;35061:77;35058:1;35051:88;35158:4;35155:1;35148:15;35182:4;35179:1;35172:15;35199:183;35234:3;35272:1;35254:16;35251:23;35248:128;;;35310:1;35307;35304;35289:23;35332:34;35363:1;35357:8;35332:34;:::i;:::-;35325:41;;35248:128;35199:183;:::o;35388:117::-;35497:1;35494;35487:12;35511:117;35620:1;35617;35610:12;35634:117;35743:1;35740;35733:12;35757:117;35866:1;35863;35856:12;35880:117;35989:1;35986;35979:12;36003:102;36044:6;36095:2;36091:7;36086:2;36079:5;36075:14;36071:28;36061:38;;36003:102;;;:::o;36111:106::-;36155:8;36204:5;36199:3;36195:15;36174:36;;36111:106;;;:::o;36223:227::-;36363:34;36359:1;36351:6;36347:14;36340:58;36432:10;36427:2;36419:6;36415:15;36408:35;36223:227;:::o;36456:225::-;36596:34;36592:1;36584:6;36580:14;36573:58;36665:8;36660:2;36652:6;36648:15;36641:33;36456:225;:::o;36687:229::-;36827:34;36823:1;36815:6;36811:14;36804:58;36896:12;36891:2;36883:6;36879:15;36872:37;36687:229;:::o;36922:233::-;37062:34;37058:1;37050:6;37046:14;37039:58;37131:16;37126:2;37118:6;37114:15;37107:41;36922:233;:::o;37161:224::-;37301:34;37297:1;37289:6;37285:14;37278:58;37370:7;37365:2;37357:6;37353:15;37346:32;37161:224;:::o;37391:229::-;37531:34;37527:1;37519:6;37515:14;37508:58;37600:12;37595:2;37587:6;37583:15;37576:37;37391:229;:::o;37626:182::-;37766:34;37762:1;37754:6;37750:14;37743:58;37626:182;:::o;37814:228::-;37954:34;37950:1;37942:6;37938:14;37931:58;38023:11;38018:2;38010:6;38006:15;37999:36;37814:228;:::o;38048:::-;38188:34;38184:1;38176:6;38172:14;38165:58;38257:11;38252:2;38244:6;38240:15;38233:36;38048:228;:::o;38282:227::-;38422:34;38418:1;38410:6;38406:14;38399:58;38491:10;38486:2;38478:6;38474:15;38467:35;38282:227;:::o;38515:220::-;38655:34;38651:1;38643:6;38639:14;38632:58;38724:3;38719:2;38711:6;38707:15;38700:28;38515:220;:::o;38741:239::-;38881:34;38877:1;38869:6;38865:14;38858:58;38950:22;38945:2;38937:6;38933:15;38926:47;38741:239;:::o;38986:711::-;39025:3;39063:4;39045:16;39042:26;39039:39;;;39071:5;;39039:39;39100:20;;:::i;:::-;39175:1;39157:16;39153:24;39150:1;39144:4;39129:49;39208:4;39202:11;39307:16;39300:4;39292:6;39288:17;39285:39;39252:18;39244:6;39241:30;39225:113;39222:146;;;39353:5;;;;39222:146;39399:6;39393:4;39389:17;39435:3;39429:10;39462:18;39454:6;39451:30;39448:43;;;39484:5;;;;;;39448:43;39532:6;39525:4;39520:3;39516:14;39512:27;39591:1;39573:16;39569:24;39563:4;39559:35;39554:3;39551:44;39548:57;;;39598:5;;;;;;;39548:57;39615;39663:6;39657:4;39653:17;39645:6;39641:30;39635:4;39615:57;:::i;:::-;39688:3;39681:10;;39029:668;;;;;38986:711;;:::o;39703:122::-;39776:24;39794:5;39776:24;:::i;:::-;39769:5;39766:35;39756:63;;39815:1;39812;39805:12;39756:63;39703:122;:::o;39831:116::-;39901:21;39916:5;39901:21;:::i;:::-;39894:5;39891:32;39881:60;;39937:1;39934;39927:12;39881:60;39831:116;:::o;39953:120::-;40025:23;40042:5;40025:23;:::i;:::-;40018:5;40015:34;40005:62;;40063:1;40060;40053:12;40005:62;39953:120;:::o;40079:122::-;40152:24;40170:5;40152:24;:::i;:::-;40145:5;40142:35;40132:63;;40191:1;40188;40181:12;40132:63;40079:122;:::o

Swarm Source

ipfs://0a6d11a95c4c331e77df51fda40d2719dc9565e939ae839eb0836f49ffaf054d
[ 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.