ETH Price: $3,667.49 (+1.85%)

Token

ERC-20: 1182 (LIZ)
 

Overview

Max Total Supply

270 LIZ

Holders

72

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A
Balance
3 LIZ
0x13c75cfbc769b53139593f8b0966539a92204d58
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:
ElizabethStephenson

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-11-14
*/

/**
 *Submitted for verification at Etherscan.io on 2021-11-14
*/

// SPDX-License-Identifier: None

pragma solidity ^0.8.4;


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);
}


/**
 * @dev Required interface of an ERC721 compliant contract.
 */
interface IERC721 is IERC165 {
    /**
     * @dev Emitted when `tokenId` token is transferred from `from` to `to`.
     */
    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);

    /**
     * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.
     */
    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);

    /**
     * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.
     */
    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);

    /**
     * @dev Returns the number of tokens in ``owner``'s account.
     */
    function balanceOf(address owner) external view returns (uint256 balance);

    /**
     * @dev Returns the owner of the `tokenId` token.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     */
    function ownerOf(uint256 tokenId) external view returns (address owner);

    /**
     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients
     * are aware of the ERC721 protocol to prevent tokens from being forever locked.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `tokenId` token must exist and be owned by `from`.
     * - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}.
     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
     *
     * Emits a {Transfer} event.
     */
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external;

    /**
     * @dev Transfers `tokenId` token from `from` to `to`.
     *
     * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `tokenId` token must be owned by `from`.
     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external;

    /**
     * @dev Gives permission to `to` to transfer `tokenId` token to another account.
     * The approval is cleared when the token is transferred.
     *
     * Only a single account can be approved at a time, so approving the zero address clears previous approvals.
     *
     * Requirements:
     *
     * - The caller must own the token or be an approved operator.
     * - `tokenId` must exist.
     *
     * Emits an {Approval} event.
     */
    function approve(address to, uint256 tokenId) external;

    /**
     * @dev Returns the account approved for `tokenId` token.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     */
    function getApproved(uint256 tokenId) external view returns (address operator);

    /**
     * @dev Approve or remove `operator` as an operator for the caller.
     * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.
     *
     * Requirements:
     *
     * - The `operator` cannot be the caller.
     *
     * Emits an {ApprovalForAll} event.
     */
    function setApprovalForAll(address operator, bool _approved) external;

    /**
     * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.
     *
     * See {setApprovalForAll}
     */
    function isApprovedForAll(address owner, address operator) external view returns (bool);

    /**
     * @dev Safely transfers `tokenId` token from `from` to `to`.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `tokenId` token must exist and be owned by `from`.
     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.
     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
     *
     * Emits a {Transfer} event.
     */
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId,
        bytes calldata data
    ) external;
}


library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    /**
     * @dev Returns the substraction of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
            // benefit is lost if 'b' is also tested.
            // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    /**
     * @dev Returns the division of two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator.
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {trySub}.
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting with custom message when dividing by zero.
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {tryMod}.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}


/**
 * @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;
    }
}

/**
 * @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() {
        _setOwner(_msgSender());
    }

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

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _setOwner(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");
        _setOwner(newOwner);
    }

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}


// import "./IERC165.sol";

/**
 * @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;
    }
}


/**
 * @dev String operations.
 */
library Strings {
    bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef";

    /**
     * @dev Converts a `uint256` to its ASCII `string` decimal representation.
     */
    function toString(uint256 value) internal pure returns (string memory) {
        // Inspired by OraclizeAPI's implementation - MIT licence
        // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol

        if (value == 0) {
            return "0";
        }
        uint256 temp = value;
        uint256 digits;
        while (temp != 0) {
            digits++;
            temp /= 10;
        }
        bytes memory buffer = new bytes(digits);
        while (value != 0) {
            digits -= 1;
            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));
            value /= 10;
        }
        return string(buffer);
    }

    /**
     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.
     */
    function toHexString(uint256 value) internal pure returns (string memory) {
        if (value == 0) {
            return "0x00";
        }
        uint256 temp = value;
        uint256 length = 0;
        while (temp != 0) {
            length++;
            temp >>= 8;
        }
        return toHexString(value, length);
    }

    /**
     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.
     */
    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {
        bytes memory buffer = new bytes(2 * length + 2);
        buffer[0] = "0";
        buffer[1] = "x";
        for (uint256 i = 2 * length + 1; i > 1; --i) {
            buffer[i] = _HEX_SYMBOLS[value & 0xf];
            value >>= 4;
        }
        require(value == 0, "Strings: hex length insufficient");
        return string(buffer);
    }
}







/**
 * @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
     * ====
     */
    function isContract(address account) internal view returns (bool) {
        // This method relies on extcodesize, which returns 0 for contracts in
        // construction, since the code is only stored at the end of the
        // constructor execution.

        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 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://diligence.consensys.net/posts/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.5.11/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 functionCall(target, data, "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");
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{value: value}(data);
        return verifyCallResult(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) {
        require(isContract(target), "Address: static call to non-contract");

        (bool success, bytes memory returndata) = target.staticcall(data);
        return verifyCallResult(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) {
        require(isContract(target), "Address: delegate call to non-contract");

        (bool success, bytes memory returndata) = target.delegatecall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the
     * revert reason 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 {
            // 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

                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}



// import "../IERC721.sol";

/**
 * @title ERC-721 Non-Fungible Token Standard, optional metadata extension
 * @dev See https://eips.ethereum.org/EIPS/eip-721
 */
interface IERC721Metadata is IERC721 {
    /**
     * @dev Returns the token collection name.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the token collection symbol.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.
     */
    function tokenURI(uint256 tokenId) external view returns (string memory);
}




/**
 * @title ERC721 token receiver interface
 * @dev Interface for any contract that wants to support safeTransfers
 * from ERC721 asset contracts.
 */
interface IERC721Receiver {
    /**
     * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}
     * by `operator` from `from`, this function is called.
     *
     * It must return its Solidity selector to confirm the token transfer.
     * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.
     *
     * The selector can be obtained in Solidity with `IERC721.onERC721Received.selector`.
     */
    function onERC721Received(
        address operator,
        address from,
        uint256 tokenId,
        bytes calldata data
    ) external returns (bytes4);
}

 
 

/**
 * @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}.
 */





contract ERC721 is Context, ERC165, IERC721, IERC721Metadata {
    using Address for address;
    using Strings for uint256;

    // Token name
    string private _name;

    // Token symbol
    string private _symbol;

    // Mapping from token ID to owner address
    mapping(uint256 => address) private _owners;

    // Mapping owner address to token count
    mapping(address => uint256) private _balances;

    // Mapping from token ID to approved address
    mapping(uint256 => address) private _tokenApprovals;

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

    /**
     * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection.
     */
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

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

    /**
     * @dev See {IERC721-balanceOf}.
     */
    function balanceOf(address owner) public view virtual override returns (uint256) {
        require(owner != address(0), "ERC721: balance query for the zero address");
        return _balances[owner];
    }

    /**
     * @dev See {IERC721-ownerOf}.
     */
    function ownerOf(uint256 tokenId) public view virtual override returns (address) {
        address owner = _owners[tokenId];
        require(owner != address(0), "ERC721: owner query for nonexistent token");
        return owner;
    }

    /**
     * @dev See {IERC721Metadata-name}.
     */
    function name() public view virtual override returns (string memory) {
        return _name;
    }

    /**
     * @dev See {IERC721Metadata-symbol}.
     */
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    /**
     * @dev See {IERC721Metadata-tokenURI}.
     */
    function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {
        require(_exists(tokenId), "ERC721Metadata: URI query for nonexistent token");

        string memory baseURI = _baseURI();
        return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : "";
    }

    /**
     * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each
     * token will be the concatenation of the `baseURI` and the `tokenId`. Empty
     * by default, can be overriden in child contracts.
     */
    function _baseURI() internal view virtual returns (string memory) {
        return "";
    }

    /**
     * @dev See {IERC721-approve}.
     */
    function approve(address to, uint256 tokenId) public virtual override {
        address owner = ERC721.ownerOf(tokenId);
        require(to != owner, "ERC721: approval to current owner");

        require(
            _msgSender() == owner || isApprovedForAll(owner, _msgSender()),
            "ERC721: approve caller is not owner nor approved for all"
        );

        _approve(to, tokenId);
    }

    /**
     * @dev See {IERC721-getApproved}.
     */
    function getApproved(uint256 tokenId) public view virtual override returns (address) {
        require(_exists(tokenId), "ERC721: approved query for nonexistent token");

        return _tokenApprovals[tokenId];
    }

    /**
     * @dev See {IERC721-setApprovalForAll}.
     */
    function setApprovalForAll(address operator, bool approved) public virtual override {
        require(operator != _msgSender(), "ERC721: approve to caller");

        _operatorApprovals[_msgSender()][operator] = approved;
        emit ApprovalForAll(_msgSender(), operator, approved);
    }

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

    /**
     * @dev See {IERC721-transferFrom}.
     */
    function transferFrom(
        address from,
        address to,
        uint256 tokenId
    ) public virtual override {
        //solhint-disable-next-line max-line-length
        require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved");

        _transfer(from, to, tokenId);
    }

    /**
     * @dev See {IERC721-safeTransferFrom}.
     */
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId
    ) public virtual override {
        safeTransferFrom(from, to, tokenId, "");
    }

    /**
     * @dev See {IERC721-safeTransferFrom}.
     */
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId,
        bytes memory _data
    ) public virtual override {
        require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved");
        _safeTransfer(from, to, tokenId, _data);
    }

    /**
     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients
     * are aware of the ERC721 protocol to prevent tokens from being forever locked.
     *
     * `_data` is additional data, it has no specified format and it is sent in call to `to`.
     *
     * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.
     * implement alternative mechanisms to perform token transfer, such as signature-based.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `tokenId` token must exist and be owned by `from`.
     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
     *
     * Emits a {Transfer} event.
     */
    function _safeTransfer(
        address from,
        address to,
        uint256 tokenId,
        bytes memory _data
    ) internal virtual {
        _transfer(from, to, tokenId);
        require(_checkOnERC721Received(from, to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer");
    }

    /**
     * @dev Returns whether `tokenId` exists.
     *
     * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.
     *
     * Tokens start existing when they are minted (`_mint`),
     * and stop existing when they are burned (`_burn`).
     */
    function _exists(uint256 tokenId) internal view virtual returns (bool) {
        return _owners[tokenId] != address(0);
    }

    /**
     * @dev Returns whether `spender` is allowed to manage `tokenId`.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     */
    function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) {
        require(_exists(tokenId), "ERC721: operator query for nonexistent token");
        address owner = ERC721.ownerOf(tokenId);
        return (spender == owner || getApproved(tokenId) == spender || isApprovedForAll(owner, spender));
    }

    /**
     * @dev Safely mints `tokenId` and transfers it to `to`.
     *
     * Requirements:
     *
     * - `tokenId` must not exist.
     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
     *
     * Emits a {Transfer} event.
     */
    function _safeMint(address to, uint256 tokenId) internal virtual {
        _safeMint(to, tokenId, "");
    }

    /**
     * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is
     * forwarded in {IERC721Receiver-onERC721Received} to contract recipients.
     */
    function _safeMint(
        address to,
        uint256 tokenId,
        bytes memory _data
    ) internal virtual {
        _mint(to, tokenId);
        require(
            _checkOnERC721Received(address(0), to, tokenId, _data),
            "ERC721: transfer to non ERC721Receiver implementer"
        );
    }

    /**
     * @dev Mints `tokenId` and transfers it to `to`.
     *
     * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible
     *
     * Requirements:
     *
     * - `tokenId` must not exist.
     * - `to` cannot be the zero address.
     *
     * Emits a {Transfer} event.
     */
    function _mint(address to, uint256 tokenId) internal virtual {
        require(to != address(0), "ERC721: mint to the zero address");
        require(!_exists(tokenId), "ERC721: token already minted");

        _beforeTokenTransfer(address(0), to, tokenId);

        _balances[to] += 1;
        _owners[tokenId] = to;

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

    /**
     * @dev Destroys `tokenId`.
     * The approval is cleared when the token is burned.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     *
     * Emits a {Transfer} event.
     */
    function _burn(uint256 tokenId) internal virtual {
        address owner = ERC721.ownerOf(tokenId);

        _beforeTokenTransfer(owner, address(0), tokenId);

        // Clear approvals
        _approve(address(0), tokenId);

        _balances[owner] -= 1;
        delete _owners[tokenId];

        emit Transfer(owner, address(0), tokenId);
    }

    /**
     * @dev Transfers `tokenId` from `from` to `to`.
     *  As opposed to {transferFrom}, this imposes no restrictions on msg.sender.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     * - `tokenId` token must be owned by `from`.
     *
     * Emits a {Transfer} event.
     */
    function _transfer(
        address from,
        address to,
        uint256 tokenId
    ) internal virtual {
        require(ERC721.ownerOf(tokenId) == from, "ERC721: transfer of token that is not own");
        require(to != address(0), "ERC721: transfer to the zero address");

        _beforeTokenTransfer(from, to, tokenId);

        // Clear approvals from the previous owner
        _approve(address(0), tokenId);

        _balances[from] -= 1;
        _balances[to] += 1;
        _owners[tokenId] = to;

        emit Transfer(from, to, tokenId);
    }

    /**
     * @dev Approve `to` to operate on `tokenId`
     *
     * Emits a {Approval} event.
     */
    function _approve(address to, uint256 tokenId) internal virtual {
        _tokenApprovals[tokenId] = to;
        emit Approval(ERC721.ownerOf(tokenId), to, tokenId);
    }

    /**
     * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.
     * The call is not executed if the target address is not a contract.
     *
     * @param from address representing the previous owner of the given token ID
     * @param to target address that will receive the tokens
     * @param tokenId uint256 ID of the token to be transferred
     * @param _data bytes optional data to send along with the call
     * @return bool whether the call correctly returned the expected magic value
     */
    function _checkOnERC721Received(
        address from,
        address to,
        uint256 tokenId,
        bytes memory _data
    ) private returns (bool) {
        if (to.isContract()) {
            try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, _data) returns (bytes4 retval) {
                return retval == IERC721Receiver.onERC721Received.selector;
            } catch (bytes memory reason) {
                if (reason.length == 0) {
                    revert("ERC721: transfer to non ERC721Receiver implementer");
                } else {
                    assembly {
                        revert(add(32, reason), mload(reason))
                    }
                }
            }
        } else {
            return true;
        }
    }

    /**
     * @dev Hook that is called before any token transfer. This includes minting
     * and burning.
     *
     * Calling conditions:
     *
     * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be
     * transferred to `to`.
     * - When `from` is zero, `tokenId` will be minted for `to`.
     * - When `to` is zero, ``from``'s `tokenId` will be burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 tokenId
    ) internal virtual {}
}


contract ElizabethStephenson is Ownable, ERC721 {
    using SafeMath for uint256;
    using Strings for uint256;

    uint256 public mintPrice = 0;
    uint256 public mintLimit = 42;

    uint256 public supplyLimit;
    bool public saleActive = false;


    address public artistAddress;
    address public devAddress;
    

    uint8 public artistShare = 50;
    uint8 public devShare = 50;

    string public baseURI = "";

    uint256 public totalSupply = 0;

//Events

    event wallet1AddressChanged(address _wallet1);
    event wallet2AddressChanged(address _wallet2);

    event SharesChanged(uint8 _value1, uint8 _value2);

    event SaleStateChanged(bool _state);
    event SupplyLimitChanged(uint256 _supplyLimit);
    event MintLimitChanged(uint256 _mintLimit);
    event MintPriceChanged(uint256 _mintPrice);
    event BaseURIChanged(string _baseURI);
    event PhotoMinted(address indexed _user, uint256 indexed _tokenId, string _tokenURI);
    event ReservePhoto(uint256 _numberOfTokens);

    
//End Events

    constructor(
        uint256 tokenSupplyLimit,
        string memory _baseURI
    ) ERC721("1182", "LIZ") {
        
        supplyLimit = tokenSupplyLimit;
        artistAddress = owner();
        devAddress = owner();
        
        baseURI = _baseURI;
       
        emit SupplyLimitChanged(supplyLimit);
        emit MintLimitChanged(mintLimit);
        emit MintPriceChanged(mintPrice);
        emit BaseURIChanged(_baseURI);
        
    }

    function tokenURI(uint256 tokenId) public view override returns (string memory) {
        require(_exists(tokenId), "ERC721Metadata: URI query for nonexistent token");

        return bytes(baseURI).length > 0 ? 
        string(abi.encodePacked(baseURI, "/", tokenId.toString())) : "";
    }


    function setBaseURI(string memory _baseURI) external onlyOwner {
        baseURI = _baseURI;
        emit BaseURIChanged(_baseURI);
    }

    function setWallet_1(address _address) external onlyOwner{
        artistAddress = _address;
        emit wallet1AddressChanged(_address);
    }

    function setWallet_2(address _address) external onlyOwner{
        devAddress = _address;
        emit wallet2AddressChanged(_address);
    }

    function toggleSaleActive() external onlyOwner {
        saleActive = !saleActive;
        emit SaleStateChanged(saleActive);
    }

    function changeSupplyLimit(uint256 _supplyLimit) external onlyOwner {
        require(_supplyLimit >= totalSupply, "Enter number higher than current.");
        supplyLimit = _supplyLimit;
        emit SupplyLimitChanged(_supplyLimit);
    }

    function changeMintLimit(uint256 _mintLimit) external onlyOwner {
        mintLimit = _mintLimit;
        emit MintLimitChanged(_mintLimit);
    }

    function changeMintPrice(uint256 _mintPrice) external onlyOwner {
        mintPrice = _mintPrice;
        emit MintPriceChanged(_mintPrice);
    }

    function buyPhoto(uint _numberOfTokens) external payable {
        require(saleActive, "Sale Has Not Started.");
        require(_numberOfTokens <= mintLimit, "Can't mint this many photos.");
        require(msg.value >= mintPrice.mul(_numberOfTokens), "Check your payment, something went wrong.");

        _mintPhoto(_numberOfTokens);
    }

    function _mintPhoto(uint _numberOfTokens) internal {
        require(totalSupply.add(_numberOfTokens) <= supplyLimit, "Not enough photos remaining.");

        uint256 newId = totalSupply;
        for(uint i = 0; i < _numberOfTokens; i++) {
            newId += 1;
            totalSupply = totalSupply.add(1);

            _safeMint(msg.sender, newId);
            emit PhotoMinted(msg.sender, newId, tokenURI(newId));
        }
    }

    function reservePhoto(uint256 _numberOfTokens) external onlyOwner {
        _mintPhoto(_numberOfTokens);
        emit ReservePhoto(_numberOfTokens);
    }

    function _withdraw() internal {
        require(address(this).balance > 0, "No balance to withdraw.");
        uint256 _amount = address(this).balance;
        (bool wallet1Success, ) = artistAddress.call{value: _amount.mul(artistShare).div(100)}("");
        (bool wallet2Success, ) = devAddress.call{value: _amount.mul(devShare).div(100)}("");

        require(wallet1Success && wallet2Success, "Withdrawal failed.");
    }


    function emergencyWithdraw() external onlyOwner {
        require(address(this).balance > 0, "No funds in smart Contract.");
        (bool success, ) = owner().call{value: address(this).balance}("");
        require(success, "Withdraw Failed.");
    }
  
    function withdrawAll() external {
        require(msg.sender == artistAddress || msg.sender == devAddress, "Only share holders can call this method.");
        _withdraw();
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"uint256","name":"tokenSupplyLimit","type":"uint256"},{"internalType":"string","name":"_baseURI","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"_baseURI","type":"string"}],"name":"BaseURIChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_mintLimit","type":"uint256"}],"name":"MintLimitChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_mintPrice","type":"uint256"}],"name":"MintPriceChanged","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":"_user","type":"address"},{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"},{"indexed":false,"internalType":"string","name":"_tokenURI","type":"string"}],"name":"PhotoMinted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_numberOfTokens","type":"uint256"}],"name":"ReservePhoto","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"_state","type":"bool"}],"name":"SaleStateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"_value1","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"_value2","type":"uint8"}],"name":"SharesChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_supplyLimit","type":"uint256"}],"name":"SupplyLimitChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_wallet1","type":"address"}],"name":"wallet1AddressChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_wallet2","type":"address"}],"name":"wallet2AddressChanged","type":"event"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"artistAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"artistShare","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_numberOfTokens","type":"uint256"}],"name":"buyPhoto","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_mintLimit","type":"uint256"}],"name":"changeMintLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_mintPrice","type":"uint256"}],"name":"changeMintPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_supplyLimit","type":"uint256"}],"name":"changeSupplyLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"devShare","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"emergencyWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mintLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mintPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_numberOfTokens","type":"uint256"}],"name":"reservePhoto","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"saleActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"_baseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"setWallet_1","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"setWallet_2","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"supplyLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"toggleSaleActive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawAll","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60006007819055602a600855600a805460ff19169055600b805461ffff60a01b191661191960a11b17905560a0604081905260808290526200004591600c91906200029b565b506000600d553480156200005857600080fd5b50604051620029e4380380620029e48339810160408190526200007b9162000341565b6040518060400160405280600481526020016318989c1960e11b815250604051806040016040528060038152602001622624ad60e91b815250620000ce620000c86200024760201b60201c565b6200024b565b8151620000e39060019060208501906200029b565b508051620000f99060029060208401906200029b565b5050506009829055600054600a80546101006001600160a01b03909316928302610100600160a81b0319909116179055600b80546001600160a01b031916909117905580516200015190600c9060208401906200029b565b507f178f2d92de18f124251b08e25bacba56eda0716625c1e799fc6c8ed1ee7d1d076009546040516200018691815260200190565b60405180910390a17f9ae30a041b5f2244849dc754c675b09aef4ad230b48995476fd6e6415d1fe8ab600854604051620001c291815260200190565b60405180910390a17f25b1f9f6b6e61dfca5575239769e4450ed2e49176670837f5d1a82a9a2fc693f600754604051620001fe91815260200190565b60405180910390a17f5411e8ebf1636d9e83d5fc4900bf80cbac82e8790da2a4c94db4895e889eedf68160405162000237919062000406565b60405180910390a15050620004c1565b3390565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b828054620002a9906200046e565b90600052602060002090601f016020900481019282620002cd576000855562000318565b82601f10620002e857805160ff191683800117855562000318565b8280016001018555821562000318579182015b8281111562000318578251825591602001919060010190620002fb565b50620003269291506200032a565b5090565b5b808211156200032657600081556001016200032b565b600080604083850312156200035557600080fd5b825160208401519092506001600160401b03808211156200037557600080fd5b818501915085601f8301126200038a57600080fd5b8151818111156200039f576200039f620004ab565b604051601f8201601f19908116603f01168101908382118183101715620003ca57620003ca620004ab565b81604052828152886020848701011115620003e457600080fd5b620003f78360208301602088016200043b565b80955050505050509250929050565b6020815260008251806020840152620004278160408501602087016200043b565b601f01601f19169190910160400192915050565b60005b83811015620004585781810151838201526020016200043e565b8381111562000468576000848401525b50505050565b600181811c908216806200048357607f821691505b60208210811415620004a557634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b61251380620004d16000396000f3fe60806040526004361061021a5760003560e01c80636c0360eb11610123578063aed04fae116100ab578063d44e35731161006f578063d44e3573146105fe578063d7eb3f3a1461061e578063db2e21bc14610643578063e985e9c514610658578063f2fde38b146106a157600080fd5b8063aed04fae14610557578063b2bf58261461058a578063b88d4fde1461059d578063c87b56dd146105bd578063cf933f86146105dd57600080fd5b80638da5cb5b116100f25780638da5cb5b146104ce5780639225de64146104ec57806395d89b411461050c578063996517cf14610521578063a22cb4651461053757600080fd5b80636c0360eb1461046f57806370a0823114610484578063715018a6146104a4578063853828b6146104b957600080fd5b806334259b5c116101a6578063460ba75e11610175578063460ba75e146103df57806355f804b3146103ff5780636352211e1461041f5780636817c76c1461043f57806368428a1b1461045557600080fd5b806334259b5c1461035f5780633ad10ef61461037f5780633fd173661461039f57806342842e0e146103bf57600080fd5b8063128cf3f8116101ed578063128cf3f8146102d057806318160ddd146102f057806319d1997a1461031457806323b872dd1461032a5780633100a5351461034a57600080fd5b806301ffc9a71461021f57806306fdde0314610254578063081812fc14610276578063095ea7b3146102ae575b600080fd5b34801561022b57600080fd5b5061023f61023a3660046120b4565b6106c1565b60405190151581526020015b60405180910390f35b34801561026057600080fd5b50610269610713565b60405161024b919061228c565b34801561028257600080fd5b50610296610291366004612137565b6107a5565b6040516001600160a01b03909116815260200161024b565b3480156102ba57600080fd5b506102ce6102c936600461208a565b61083f565b005b3480156102dc57600080fd5b506102ce6102eb366004611f48565b610955565b3480156102fc57600080fd5b50610306600d5481565b60405190815260200161024b565b34801561032057600080fd5b5061030660095481565b34801561033657600080fd5b506102ce610345366004611f96565b6109d4565b34801561035657600080fd5b506102ce610a05565b34801561036b57600080fd5b506102ce61037a366004612137565b610a7c565b34801561038b57600080fd5b50600b54610296906001600160a01b031681565b3480156103ab57600080fd5b506102ce6103ba366004612137565b610adb565b3480156103cb57600080fd5b506102ce6103da366004611f96565b610b3a565b3480156103eb57600080fd5b506102ce6103fa366004612137565b610b55565b34801561040b57600080fd5b506102ce61041a3660046120ee565b610bb8565b34801561042b57600080fd5b5061029661043a366004612137565b610c25565b34801561044b57600080fd5b5061030660075481565b34801561046157600080fd5b50600a5461023f9060ff1681565b34801561047b57600080fd5b50610269610c9c565b34801561049057600080fd5b5061030661049f366004611f48565b610d2a565b3480156104b057600080fd5b506102ce610db1565b3480156104c557600080fd5b506102ce610de7565b3480156104da57600080fd5b506000546001600160a01b0316610296565b3480156104f857600080fd5b506102ce610507366004611f48565b610e74565b34801561051857600080fd5b50610269610ef4565b34801561052d57600080fd5b5061030660085481565b34801561054357600080fd5b506102ce61055236600461204e565b610f03565b34801561056357600080fd5b50600b5461057890600160a81b900460ff1681565b60405160ff909116815260200161024b565b6102ce610598366004612137565b610fc8565b3480156105a957600080fd5b506102ce6105b8366004611fd2565b6110de565b3480156105c957600080fd5b506102696105d8366004612137565b611116565b3480156105e957600080fd5b50600b5461057890600160a01b900460ff1681565b34801561060a57600080fd5b506102ce610619366004612137565b6111f1565b34801561062a57600080fd5b50600a546102969061010090046001600160a01b031681565b34801561064f57600080fd5b506102ce6112ac565b34801561066457600080fd5b5061023f610673366004611f63565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205460ff1690565b3480156106ad57600080fd5b506102ce6106bc366004611f48565b6113bc565b60006001600160e01b031982166380ac58cd60e01b14806106f257506001600160e01b03198216635b5e139f60e01b145b8061070d57506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606001805461072290612405565b80601f016020809104026020016040519081016040528092919081815260200182805461074e90612405565b801561079b5780601f106107705761010080835404028352916020019161079b565b820191906000526020600020905b81548152906001019060200180831161077e57829003601f168201915b5050505050905090565b6000818152600360205260408120546001600160a01b03166108235760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084015b60405180910390fd5b506000908152600560205260409020546001600160a01b031690565b600061084a82610c25565b9050806001600160a01b0316836001600160a01b031614156108b85760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b606482015260840161081a565b336001600160a01b03821614806108d457506108d48133610673565b6109465760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000606482015260840161081a565b6109508383611454565b505050565b6000546001600160a01b0316331461097f5760405162461bcd60e51b815260040161081a906122f1565b600b80546001600160a01b0319166001600160a01b0383169081179091556040519081527f9539f0adf432f6612656f7ec15ddf8a7e5835132bd4a474f39954885dbfc4554906020015b60405180910390a150565b6109de33826114c2565b6109fa5760405162461bcd60e51b815260040161081a90612326565b6109508383836115b9565b6000546001600160a01b03163314610a2f5760405162461bcd60e51b815260040161081a906122f1565b600a805460ff8082161560ff1990921682179092556040519116151581527fe333f8a36ee86e754548af2d6f50c73ff0d501e22e6c784662123dbbe493c6029060200160405180910390a1565b6000546001600160a01b03163314610aa65760405162461bcd60e51b815260040161081a906122f1565b60088190556040518181527f9ae30a041b5f2244849dc754c675b09aef4ad230b48995476fd6e6415d1fe8ab906020016109c9565b6000546001600160a01b03163314610b055760405162461bcd60e51b815260040161081a906122f1565b60078190556040518181527f25b1f9f6b6e61dfca5575239769e4450ed2e49176670837f5d1a82a9a2fc693f906020016109c9565b610950838383604051806020016040528060008152506110de565b6000546001600160a01b03163314610b7f5760405162461bcd60e51b815260040161081a906122f1565b610b8881611759565b6040518181527f6b073ac6e0a7cf5c6f967385290253dbd6ee43f70b0f0d0ec337ce1d4662f9a0906020016109c9565b6000546001600160a01b03163314610be25760405162461bcd60e51b815260040161081a906122f1565b8051610bf590600c906020840190611e1d565b507f5411e8ebf1636d9e83d5fc4900bf80cbac82e8790da2a4c94db4895e889eedf6816040516109c9919061228c565b6000818152600360205260408120546001600160a01b03168061070d5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b606482015260840161081a565b600c8054610ca990612405565b80601f0160208091040260200160405190810160405280929190818152602001828054610cd590612405565b8015610d225780601f10610cf757610100808354040283529160200191610d22565b820191906000526020600020905b815481529060010190602001808311610d0557829003601f168201915b505050505081565b60006001600160a01b038216610d955760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b606482015260840161081a565b506001600160a01b031660009081526004602052604090205490565b6000546001600160a01b03163314610ddb5760405162461bcd60e51b815260040161081a906122f1565b610de56000611841565b565b600a5461010090046001600160a01b0316331480610e0f5750600b546001600160a01b031633145b610e6c5760405162461bcd60e51b815260206004820152602860248201527f4f6e6c7920736861726520686f6c646572732063616e2063616c6c20746869736044820152671036b2ba3437b21760c11b606482015260840161081a565b610de5611891565b6000546001600160a01b03163314610e9e5760405162461bcd60e51b815260040161081a906122f1565b600a8054610100600160a81b0319166101006001600160a01b038416908102919091179091556040519081527f1354f2ed7ad63d510fe05b011c0f4585cc0503e5f2a9cf0ac0b2e7dc80127d5d906020016109c9565b60606002805461072290612405565b6001600160a01b038216331415610f5c5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161081a565b3360008181526006602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b600a5460ff166110125760405162461bcd60e51b815260206004820152601560248201527429b0b632902430b9902737ba1029ba30b93a32b21760591b604482015260640161081a565b6008548111156110645760405162461bcd60e51b815260206004820152601c60248201527f43616e2774206d696e742074686973206d616e792070686f746f732e00000000604482015260640161081a565b6007546110719082611a21565b3410156110d25760405162461bcd60e51b815260206004820152602960248201527f436865636b20796f7572207061796d656e742c20736f6d657468696e67207765604482015268373a103bb937b7339760b91b606482015260840161081a565b6110db81611759565b50565b6110e833836114c2565b6111045760405162461bcd60e51b815260040161081a90612326565b61111084848484611a34565b50505050565b6000818152600360205260409020546060906001600160a01b03166111955760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b606482015260840161081a565b6000600c80546111a490612405565b9050116111c0576040518060200160405280600081525061070d565b600c6111cb83611a67565b6040516020016111dc929190612198565b60405160208183030381529060405292915050565b6000546001600160a01b0316331461121b5760405162461bcd60e51b815260040161081a906122f1565b600d548110156112775760405162461bcd60e51b815260206004820152602160248201527f456e746572206e756d62657220686967686572207468616e2063757272656e746044820152601760f91b606482015260840161081a565b60098190556040518181527f178f2d92de18f124251b08e25bacba56eda0716625c1e799fc6c8ed1ee7d1d07906020016109c9565b6000546001600160a01b031633146112d65760405162461bcd60e51b815260040161081a906122f1565b600047116113265760405162461bcd60e51b815260206004820152601b60248201527f4e6f2066756e647320696e20736d61727420436f6e74726163742e0000000000604482015260640161081a565b600080546040516001600160a01b039091169047908381818185875af1925050503d8060008114611373576040519150601f19603f3d011682016040523d82523d6000602084013e611378565b606091505b50509050806110db5760405162461bcd60e51b815260206004820152601060248201526f2bb4ba34323930bb902330b4b632b21760811b604482015260640161081a565b6000546001600160a01b031633146113e65760405162461bcd60e51b815260040161081a906122f1565b6001600160a01b03811661144b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161081a565b6110db81611841565b600081815260056020526040902080546001600160a01b0319166001600160a01b038416908117909155819061148982610c25565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000818152600360205260408120546001600160a01b031661153b5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b606482015260840161081a565b600061154683610c25565b9050806001600160a01b0316846001600160a01b031614806115815750836001600160a01b0316611576846107a5565b6001600160a01b0316145b806115b157506001600160a01b0380821660009081526006602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b03166115cc82610c25565b6001600160a01b0316146116345760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b606482015260840161081a565b6001600160a01b0382166116965760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b606482015260840161081a565b6116a1600082611454565b6001600160a01b03831660009081526004602052604081208054600192906116ca9084906123c2565b90915550506001600160a01b03821660009081526004602052604081208054600192906116f8908490612377565b909155505060008181526003602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b600954600d546117699083611b65565b11156117b75760405162461bcd60e51b815260206004820152601c60248201527f4e6f7420656e6f7567682070686f746f732072656d61696e696e672e00000000604482015260640161081a565b600d5460005b82811015610950576117d0600183612377565b600d549092506117e1906001611b65565b600d556117ee3383611b71565b81337f2d7c0c73b42288040234f9bcd18ba3795f31d380655d23ec63f70171ddbdba2461181a83611116565b604051611827919061228c565b60405180910390a38061183981612440565b9150506117bd565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600047116118e15760405162461bcd60e51b815260206004820152601760248201527f4e6f2062616c616e636520746f2077697468647261772e000000000000000000604482015260640161081a565b600a54600b5447916000916101009091046001600160a01b03169061191e90606490611918908690600160a01b900460ff16611a21565b90611b8f565b604051600081818185875af1925050503d806000811461195a576040519150601f19603f3d011682016040523d82523d6000602084013e61195f565b606091505b5050600b549091506000906001600160a01b0381169061199190606490611918908790600160a81b900460ff16611a21565b604051600081818185875af1925050503d80600081146119cd576040519150601f19603f3d011682016040523d82523d6000602084013e6119d2565b606091505b505090508180156119e05750805b6109505760405162461bcd60e51b81526020600482015260126024820152712bb4ba34323930bbb0b6103330b4b632b21760711b604482015260640161081a565b6000611a2d82846123a3565b9392505050565b611a3f8484846115b9565b611a4b84848484611b9b565b6111105760405162461bcd60e51b815260040161081a9061229f565b606081611a8b5750506040805180820190915260018152600360fc1b602082015290565b8160005b8115611ab55780611a9f81612440565b9150611aae9050600a8361238f565b9150611a8f565b60008167ffffffffffffffff811115611ad057611ad06124b1565b6040519080825280601f01601f191660200182016040528015611afa576020820181803683370190505b5090505b84156115b157611b0f6001836123c2565b9150611b1c600a8661245b565b611b27906030612377565b60f81b818381518110611b3c57611b3c61249b565b60200101906001600160f81b031916908160001a905350611b5e600a8661238f565b9450611afe565b6000611a2d8284612377565b611b8b828260405180602001604052806000815250611ca8565b5050565b6000611a2d828461238f565b60006001600160a01b0384163b15611c9d57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290611bdf90339089908890889060040161224f565b602060405180830381600087803b158015611bf957600080fd5b505af1925050508015611c29575060408051601f3d908101601f19168201909252611c26918101906120d1565b60015b611c83573d808015611c57576040519150601f19603f3d011682016040523d82523d6000602084013e611c5c565b606091505b508051611c7b5760405162461bcd60e51b815260040161081a9061229f565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506115b1565b506001949350505050565b611cb28383611cdb565b611cbf6000848484611b9b565b6109505760405162461bcd60e51b815260040161081a9061229f565b6001600160a01b038216611d315760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161081a565b6000818152600360205260409020546001600160a01b031615611d965760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161081a565b6001600160a01b0382166000908152600460205260408120805460019290611dbf908490612377565b909155505060008181526003602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b828054611e2990612405565b90600052602060002090601f016020900481019282611e4b5760008555611e91565b82601f10611e6457805160ff1916838001178555611e91565b82800160010185558215611e91579182015b82811115611e91578251825591602001919060010190611e76565b50611e9d929150611ea1565b5090565b5b80821115611e9d5760008155600101611ea2565b600067ffffffffffffffff80841115611ed157611ed16124b1565b604051601f8501601f19908116603f01168101908282118183101715611ef957611ef96124b1565b81604052809350858152868686011115611f1257600080fd5b858560208301376000602087830101525050509392505050565b80356001600160a01b0381168114611f4357600080fd5b919050565b600060208284031215611f5a57600080fd5b611a2d82611f2c565b60008060408385031215611f7657600080fd5b611f7f83611f2c565b9150611f8d60208401611f2c565b90509250929050565b600080600060608486031215611fab57600080fd5b611fb484611f2c565b9250611fc260208501611f2c565b9150604084013590509250925092565b60008060008060808587031215611fe857600080fd5b611ff185611f2c565b9350611fff60208601611f2c565b925060408501359150606085013567ffffffffffffffff81111561202257600080fd5b8501601f8101871361203357600080fd5b61204287823560208401611eb6565b91505092959194509250565b6000806040838503121561206157600080fd5b61206a83611f2c565b91506020830135801515811461207f57600080fd5b809150509250929050565b6000806040838503121561209d57600080fd5b6120a683611f2c565b946020939093013593505050565b6000602082840312156120c657600080fd5b8135611a2d816124c7565b6000602082840312156120e357600080fd5b8151611a2d816124c7565b60006020828403121561210057600080fd5b813567ffffffffffffffff81111561211757600080fd5b8201601f8101841361212857600080fd5b6115b184823560208401611eb6565b60006020828403121561214957600080fd5b5035919050565b600081518084526121688160208601602086016123d9565b601f01601f19169290920160200192915050565b6000815161218e8185602086016123d9565b9290920192915050565b600080845481600182811c9150808316806121b457607f831692505b60208084108214156121d457634e487b7160e01b86526022600452602486fd5b8180156121e857600181146121f957612226565b60ff19861689528489019650612226565b60008b81526020902060005b8681101561221e5781548b820152908501908301612205565b505084890196505b50505050505061224661224082602f60f81b815260010190565b8561217c565b95945050505050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061228290830184612150565b9695505050505050565b602081526000611a2d6020830184612150565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b6000821982111561238a5761238a61246f565b500190565b60008261239e5761239e612485565b500490565b60008160001904831182151516156123bd576123bd61246f565b500290565b6000828210156123d4576123d461246f565b500390565b60005b838110156123f45781810151838201526020016123dc565b838111156111105750506000910152565b600181811c9082168061241957607f821691505b6020821081141561243a57634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156124545761245461246f565b5060010190565b60008261246a5761246a612485565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b0319811681146110db57600080fdfea2646970667358221220c8e7de5aa8e1d2957f72973625e0d9592ab2c555d7be56d65b60de80245c523564736f6c6343000807003300000000000000000000000000000000000000000000000000000000000002580000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000001a68747470733a2f2f6d656d626572736e66742e696f2f31313832000000000000

Deployed Bytecode

0x60806040526004361061021a5760003560e01c80636c0360eb11610123578063aed04fae116100ab578063d44e35731161006f578063d44e3573146105fe578063d7eb3f3a1461061e578063db2e21bc14610643578063e985e9c514610658578063f2fde38b146106a157600080fd5b8063aed04fae14610557578063b2bf58261461058a578063b88d4fde1461059d578063c87b56dd146105bd578063cf933f86146105dd57600080fd5b80638da5cb5b116100f25780638da5cb5b146104ce5780639225de64146104ec57806395d89b411461050c578063996517cf14610521578063a22cb4651461053757600080fd5b80636c0360eb1461046f57806370a0823114610484578063715018a6146104a4578063853828b6146104b957600080fd5b806334259b5c116101a6578063460ba75e11610175578063460ba75e146103df57806355f804b3146103ff5780636352211e1461041f5780636817c76c1461043f57806368428a1b1461045557600080fd5b806334259b5c1461035f5780633ad10ef61461037f5780633fd173661461039f57806342842e0e146103bf57600080fd5b8063128cf3f8116101ed578063128cf3f8146102d057806318160ddd146102f057806319d1997a1461031457806323b872dd1461032a5780633100a5351461034a57600080fd5b806301ffc9a71461021f57806306fdde0314610254578063081812fc14610276578063095ea7b3146102ae575b600080fd5b34801561022b57600080fd5b5061023f61023a3660046120b4565b6106c1565b60405190151581526020015b60405180910390f35b34801561026057600080fd5b50610269610713565b60405161024b919061228c565b34801561028257600080fd5b50610296610291366004612137565b6107a5565b6040516001600160a01b03909116815260200161024b565b3480156102ba57600080fd5b506102ce6102c936600461208a565b61083f565b005b3480156102dc57600080fd5b506102ce6102eb366004611f48565b610955565b3480156102fc57600080fd5b50610306600d5481565b60405190815260200161024b565b34801561032057600080fd5b5061030660095481565b34801561033657600080fd5b506102ce610345366004611f96565b6109d4565b34801561035657600080fd5b506102ce610a05565b34801561036b57600080fd5b506102ce61037a366004612137565b610a7c565b34801561038b57600080fd5b50600b54610296906001600160a01b031681565b3480156103ab57600080fd5b506102ce6103ba366004612137565b610adb565b3480156103cb57600080fd5b506102ce6103da366004611f96565b610b3a565b3480156103eb57600080fd5b506102ce6103fa366004612137565b610b55565b34801561040b57600080fd5b506102ce61041a3660046120ee565b610bb8565b34801561042b57600080fd5b5061029661043a366004612137565b610c25565b34801561044b57600080fd5b5061030660075481565b34801561046157600080fd5b50600a5461023f9060ff1681565b34801561047b57600080fd5b50610269610c9c565b34801561049057600080fd5b5061030661049f366004611f48565b610d2a565b3480156104b057600080fd5b506102ce610db1565b3480156104c557600080fd5b506102ce610de7565b3480156104da57600080fd5b506000546001600160a01b0316610296565b3480156104f857600080fd5b506102ce610507366004611f48565b610e74565b34801561051857600080fd5b50610269610ef4565b34801561052d57600080fd5b5061030660085481565b34801561054357600080fd5b506102ce61055236600461204e565b610f03565b34801561056357600080fd5b50600b5461057890600160a81b900460ff1681565b60405160ff909116815260200161024b565b6102ce610598366004612137565b610fc8565b3480156105a957600080fd5b506102ce6105b8366004611fd2565b6110de565b3480156105c957600080fd5b506102696105d8366004612137565b611116565b3480156105e957600080fd5b50600b5461057890600160a01b900460ff1681565b34801561060a57600080fd5b506102ce610619366004612137565b6111f1565b34801561062a57600080fd5b50600a546102969061010090046001600160a01b031681565b34801561064f57600080fd5b506102ce6112ac565b34801561066457600080fd5b5061023f610673366004611f63565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205460ff1690565b3480156106ad57600080fd5b506102ce6106bc366004611f48565b6113bc565b60006001600160e01b031982166380ac58cd60e01b14806106f257506001600160e01b03198216635b5e139f60e01b145b8061070d57506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606001805461072290612405565b80601f016020809104026020016040519081016040528092919081815260200182805461074e90612405565b801561079b5780601f106107705761010080835404028352916020019161079b565b820191906000526020600020905b81548152906001019060200180831161077e57829003601f168201915b5050505050905090565b6000818152600360205260408120546001600160a01b03166108235760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084015b60405180910390fd5b506000908152600560205260409020546001600160a01b031690565b600061084a82610c25565b9050806001600160a01b0316836001600160a01b031614156108b85760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b606482015260840161081a565b336001600160a01b03821614806108d457506108d48133610673565b6109465760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000606482015260840161081a565b6109508383611454565b505050565b6000546001600160a01b0316331461097f5760405162461bcd60e51b815260040161081a906122f1565b600b80546001600160a01b0319166001600160a01b0383169081179091556040519081527f9539f0adf432f6612656f7ec15ddf8a7e5835132bd4a474f39954885dbfc4554906020015b60405180910390a150565b6109de33826114c2565b6109fa5760405162461bcd60e51b815260040161081a90612326565b6109508383836115b9565b6000546001600160a01b03163314610a2f5760405162461bcd60e51b815260040161081a906122f1565b600a805460ff8082161560ff1990921682179092556040519116151581527fe333f8a36ee86e754548af2d6f50c73ff0d501e22e6c784662123dbbe493c6029060200160405180910390a1565b6000546001600160a01b03163314610aa65760405162461bcd60e51b815260040161081a906122f1565b60088190556040518181527f9ae30a041b5f2244849dc754c675b09aef4ad230b48995476fd6e6415d1fe8ab906020016109c9565b6000546001600160a01b03163314610b055760405162461bcd60e51b815260040161081a906122f1565b60078190556040518181527f25b1f9f6b6e61dfca5575239769e4450ed2e49176670837f5d1a82a9a2fc693f906020016109c9565b610950838383604051806020016040528060008152506110de565b6000546001600160a01b03163314610b7f5760405162461bcd60e51b815260040161081a906122f1565b610b8881611759565b6040518181527f6b073ac6e0a7cf5c6f967385290253dbd6ee43f70b0f0d0ec337ce1d4662f9a0906020016109c9565b6000546001600160a01b03163314610be25760405162461bcd60e51b815260040161081a906122f1565b8051610bf590600c906020840190611e1d565b507f5411e8ebf1636d9e83d5fc4900bf80cbac82e8790da2a4c94db4895e889eedf6816040516109c9919061228c565b6000818152600360205260408120546001600160a01b03168061070d5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b606482015260840161081a565b600c8054610ca990612405565b80601f0160208091040260200160405190810160405280929190818152602001828054610cd590612405565b8015610d225780601f10610cf757610100808354040283529160200191610d22565b820191906000526020600020905b815481529060010190602001808311610d0557829003601f168201915b505050505081565b60006001600160a01b038216610d955760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b606482015260840161081a565b506001600160a01b031660009081526004602052604090205490565b6000546001600160a01b03163314610ddb5760405162461bcd60e51b815260040161081a906122f1565b610de56000611841565b565b600a5461010090046001600160a01b0316331480610e0f5750600b546001600160a01b031633145b610e6c5760405162461bcd60e51b815260206004820152602860248201527f4f6e6c7920736861726520686f6c646572732063616e2063616c6c20746869736044820152671036b2ba3437b21760c11b606482015260840161081a565b610de5611891565b6000546001600160a01b03163314610e9e5760405162461bcd60e51b815260040161081a906122f1565b600a8054610100600160a81b0319166101006001600160a01b038416908102919091179091556040519081527f1354f2ed7ad63d510fe05b011c0f4585cc0503e5f2a9cf0ac0b2e7dc80127d5d906020016109c9565b60606002805461072290612405565b6001600160a01b038216331415610f5c5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161081a565b3360008181526006602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b600a5460ff166110125760405162461bcd60e51b815260206004820152601560248201527429b0b632902430b9902737ba1029ba30b93a32b21760591b604482015260640161081a565b6008548111156110645760405162461bcd60e51b815260206004820152601c60248201527f43616e2774206d696e742074686973206d616e792070686f746f732e00000000604482015260640161081a565b6007546110719082611a21565b3410156110d25760405162461bcd60e51b815260206004820152602960248201527f436865636b20796f7572207061796d656e742c20736f6d657468696e67207765604482015268373a103bb937b7339760b91b606482015260840161081a565b6110db81611759565b50565b6110e833836114c2565b6111045760405162461bcd60e51b815260040161081a90612326565b61111084848484611a34565b50505050565b6000818152600360205260409020546060906001600160a01b03166111955760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b606482015260840161081a565b6000600c80546111a490612405565b9050116111c0576040518060200160405280600081525061070d565b600c6111cb83611a67565b6040516020016111dc929190612198565b60405160208183030381529060405292915050565b6000546001600160a01b0316331461121b5760405162461bcd60e51b815260040161081a906122f1565b600d548110156112775760405162461bcd60e51b815260206004820152602160248201527f456e746572206e756d62657220686967686572207468616e2063757272656e746044820152601760f91b606482015260840161081a565b60098190556040518181527f178f2d92de18f124251b08e25bacba56eda0716625c1e799fc6c8ed1ee7d1d07906020016109c9565b6000546001600160a01b031633146112d65760405162461bcd60e51b815260040161081a906122f1565b600047116113265760405162461bcd60e51b815260206004820152601b60248201527f4e6f2066756e647320696e20736d61727420436f6e74726163742e0000000000604482015260640161081a565b600080546040516001600160a01b039091169047908381818185875af1925050503d8060008114611373576040519150601f19603f3d011682016040523d82523d6000602084013e611378565b606091505b50509050806110db5760405162461bcd60e51b815260206004820152601060248201526f2bb4ba34323930bb902330b4b632b21760811b604482015260640161081a565b6000546001600160a01b031633146113e65760405162461bcd60e51b815260040161081a906122f1565b6001600160a01b03811661144b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161081a565b6110db81611841565b600081815260056020526040902080546001600160a01b0319166001600160a01b038416908117909155819061148982610c25565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000818152600360205260408120546001600160a01b031661153b5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b606482015260840161081a565b600061154683610c25565b9050806001600160a01b0316846001600160a01b031614806115815750836001600160a01b0316611576846107a5565b6001600160a01b0316145b806115b157506001600160a01b0380821660009081526006602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b03166115cc82610c25565b6001600160a01b0316146116345760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b606482015260840161081a565b6001600160a01b0382166116965760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b606482015260840161081a565b6116a1600082611454565b6001600160a01b03831660009081526004602052604081208054600192906116ca9084906123c2565b90915550506001600160a01b03821660009081526004602052604081208054600192906116f8908490612377565b909155505060008181526003602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b600954600d546117699083611b65565b11156117b75760405162461bcd60e51b815260206004820152601c60248201527f4e6f7420656e6f7567682070686f746f732072656d61696e696e672e00000000604482015260640161081a565b600d5460005b82811015610950576117d0600183612377565b600d549092506117e1906001611b65565b600d556117ee3383611b71565b81337f2d7c0c73b42288040234f9bcd18ba3795f31d380655d23ec63f70171ddbdba2461181a83611116565b604051611827919061228c565b60405180910390a38061183981612440565b9150506117bd565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600047116118e15760405162461bcd60e51b815260206004820152601760248201527f4e6f2062616c616e636520746f2077697468647261772e000000000000000000604482015260640161081a565b600a54600b5447916000916101009091046001600160a01b03169061191e90606490611918908690600160a01b900460ff16611a21565b90611b8f565b604051600081818185875af1925050503d806000811461195a576040519150601f19603f3d011682016040523d82523d6000602084013e61195f565b606091505b5050600b549091506000906001600160a01b0381169061199190606490611918908790600160a81b900460ff16611a21565b604051600081818185875af1925050503d80600081146119cd576040519150601f19603f3d011682016040523d82523d6000602084013e6119d2565b606091505b505090508180156119e05750805b6109505760405162461bcd60e51b81526020600482015260126024820152712bb4ba34323930bbb0b6103330b4b632b21760711b604482015260640161081a565b6000611a2d82846123a3565b9392505050565b611a3f8484846115b9565b611a4b84848484611b9b565b6111105760405162461bcd60e51b815260040161081a9061229f565b606081611a8b5750506040805180820190915260018152600360fc1b602082015290565b8160005b8115611ab55780611a9f81612440565b9150611aae9050600a8361238f565b9150611a8f565b60008167ffffffffffffffff811115611ad057611ad06124b1565b6040519080825280601f01601f191660200182016040528015611afa576020820181803683370190505b5090505b84156115b157611b0f6001836123c2565b9150611b1c600a8661245b565b611b27906030612377565b60f81b818381518110611b3c57611b3c61249b565b60200101906001600160f81b031916908160001a905350611b5e600a8661238f565b9450611afe565b6000611a2d8284612377565b611b8b828260405180602001604052806000815250611ca8565b5050565b6000611a2d828461238f565b60006001600160a01b0384163b15611c9d57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290611bdf90339089908890889060040161224f565b602060405180830381600087803b158015611bf957600080fd5b505af1925050508015611c29575060408051601f3d908101601f19168201909252611c26918101906120d1565b60015b611c83573d808015611c57576040519150601f19603f3d011682016040523d82523d6000602084013e611c5c565b606091505b508051611c7b5760405162461bcd60e51b815260040161081a9061229f565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506115b1565b506001949350505050565b611cb28383611cdb565b611cbf6000848484611b9b565b6109505760405162461bcd60e51b815260040161081a9061229f565b6001600160a01b038216611d315760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161081a565b6000818152600360205260409020546001600160a01b031615611d965760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161081a565b6001600160a01b0382166000908152600460205260408120805460019290611dbf908490612377565b909155505060008181526003602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b828054611e2990612405565b90600052602060002090601f016020900481019282611e4b5760008555611e91565b82601f10611e6457805160ff1916838001178555611e91565b82800160010185558215611e91579182015b82811115611e91578251825591602001919060010190611e76565b50611e9d929150611ea1565b5090565b5b80821115611e9d5760008155600101611ea2565b600067ffffffffffffffff80841115611ed157611ed16124b1565b604051601f8501601f19908116603f01168101908282118183101715611ef957611ef96124b1565b81604052809350858152868686011115611f1257600080fd5b858560208301376000602087830101525050509392505050565b80356001600160a01b0381168114611f4357600080fd5b919050565b600060208284031215611f5a57600080fd5b611a2d82611f2c565b60008060408385031215611f7657600080fd5b611f7f83611f2c565b9150611f8d60208401611f2c565b90509250929050565b600080600060608486031215611fab57600080fd5b611fb484611f2c565b9250611fc260208501611f2c565b9150604084013590509250925092565b60008060008060808587031215611fe857600080fd5b611ff185611f2c565b9350611fff60208601611f2c565b925060408501359150606085013567ffffffffffffffff81111561202257600080fd5b8501601f8101871361203357600080fd5b61204287823560208401611eb6565b91505092959194509250565b6000806040838503121561206157600080fd5b61206a83611f2c565b91506020830135801515811461207f57600080fd5b809150509250929050565b6000806040838503121561209d57600080fd5b6120a683611f2c565b946020939093013593505050565b6000602082840312156120c657600080fd5b8135611a2d816124c7565b6000602082840312156120e357600080fd5b8151611a2d816124c7565b60006020828403121561210057600080fd5b813567ffffffffffffffff81111561211757600080fd5b8201601f8101841361212857600080fd5b6115b184823560208401611eb6565b60006020828403121561214957600080fd5b5035919050565b600081518084526121688160208601602086016123d9565b601f01601f19169290920160200192915050565b6000815161218e8185602086016123d9565b9290920192915050565b600080845481600182811c9150808316806121b457607f831692505b60208084108214156121d457634e487b7160e01b86526022600452602486fd5b8180156121e857600181146121f957612226565b60ff19861689528489019650612226565b60008b81526020902060005b8681101561221e5781548b820152908501908301612205565b505084890196505b50505050505061224661224082602f60f81b815260010190565b8561217c565b95945050505050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061228290830184612150565b9695505050505050565b602081526000611a2d6020830184612150565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b6000821982111561238a5761238a61246f565b500190565b60008261239e5761239e612485565b500490565b60008160001904831182151516156123bd576123bd61246f565b500290565b6000828210156123d4576123d461246f565b500390565b60005b838110156123f45781810151838201526020016123dc565b838111156111105750506000910152565b600181811c9082168061241957607f821691505b6020821081141561243a57634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156124545761245461246f565b5060010190565b60008261246a5761246a612485565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b0319811681146110db57600080fdfea2646970667358221220c8e7de5aa8e1d2957f72973625e0d9592ab2c555d7be56d65b60de80245c523564736f6c63430008070033

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

00000000000000000000000000000000000000000000000000000000000002580000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000001a68747470733a2f2f6d656d626572736e66742e696f2f31313832000000000000

-----Decoded View---------------
Arg [0] : tokenSupplyLimit (uint256): 600
Arg [1] : _baseURI (string): https://membersnft.io/1182

-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000258
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [2] : 000000000000000000000000000000000000000000000000000000000000001a
Arg [3] : 68747470733a2f2f6d656d626572736e66742e696f2f31313832000000000000


Deployed Bytecode Sourcemap

40605:4875:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28480:305;;;;;;;;;;-1:-1:-1;28480:305:0;;;;;:::i;:::-;;:::i;:::-;;;7001:14:1;;6994:22;6976:41;;6964:2;6949:18;28480:305:0;;;;;;;;29425:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;30984:221::-;;;;;;;;;;-1:-1:-1;30984:221:0;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;6299:32:1;;;6281:51;;6269:2;6254:18;30984:221:0;6135:203:1;30507:411:0;;;;;;;;;;-1:-1:-1;30507:411:0;;;;;:::i;:::-;;:::i;:::-;;42753:144;;;;;;;;;;-1:-1:-1;42753:144:0;;;;;:::i;:::-;;:::i;41055:30::-;;;;;;;;;;;;;;;;;;;17465:25:1;;;17453:2;17438:18;41055:30:0;17319:177:1;40800:26:0;;;;;;;;;;;;;;;;31874:339;;;;;;;;;;-1:-1:-1;31874:339:0;;;;;:::i;:::-;;:::i;42905:134::-;;;;;;;;;;;;;:::i;43300:149::-;;;;;;;;;;-1:-1:-1;43300:149:0;;;;;:::i;:::-;;:::i;40909:25::-;;;;;;;;;;-1:-1:-1;40909:25:0;;;;-1:-1:-1;;;;;40909:25:0;;;43457:149;;;;;;;;;;-1:-1:-1;43457:149:0;;;;;:::i;:::-;;:::i;32284:185::-;;;;;;;;;;-1:-1:-1;32284:185:0;;;;;:::i;:::-;;:::i;44424:157::-;;;;;;;;;;-1:-1:-1;44424:157:0;;;;;:::i;:::-;;:::i;42450:140::-;;;;;;;;;;-1:-1:-1;42450:140:0;;;;;:::i;:::-;;:::i;29119:239::-;;;;;;;;;;-1:-1:-1;29119:239:0;;;;;:::i;:::-;;:::i;40727:28::-;;;;;;;;;;;;;;;;40833:30;;;;;;;;;;-1:-1:-1;40833:30:0;;;;;;;;41020:26;;;;;;;;;;;;;:::i;28849:208::-;;;;;;;;;;-1:-1:-1;28849:208:0;;;;;:::i;:::-;;:::i;14141:94::-;;;;;;;;;;;;;:::i;45296:181::-;;;;;;;;;;;;;:::i;13490:87::-;;;;;;;;;;-1:-1:-1;13536:7:0;13563:6;-1:-1:-1;;;;;13563:6:0;13490:87;;42598:147;;;;;;;;;;-1:-1:-1;42598:147:0;;;;;:::i;:::-;;:::i;29594:104::-;;;;;;;;;;;;;:::i;40762:29::-;;;;;;;;;;;;;;;;31277:295;;;;;;;;;;-1:-1:-1;31277:295:0;;;;;:::i;:::-;;:::i;40985:26::-;;;;;;;;;;-1:-1:-1;40985:26:0;;;;-1:-1:-1;;;40985:26:0;;;;;;;;;17673:4:1;17661:17;;;17643:36;;17631:2;17616:18;40985:26:0;17501:184:1;43614:348:0;;;;;;:::i;:::-;;:::i;32540:328::-;;;;;;;;;;-1:-1:-1;32540:328:0;;;;;:::i;:::-;;:::i;42144:296::-;;;;;;;;;;-1:-1:-1;42144:296:0;;;;;:::i;:::-;;:::i;40949:29::-;;;;;;;;;;-1:-1:-1;40949:29:0;;;;-1:-1:-1;;;40949:29:0;;;;;;43047:245;;;;;;;;;;-1:-1:-1;43047:245:0;;;;;:::i;:::-;;:::i;40874:28::-;;;;;;;;;;-1:-1:-1;40874:28:0;;;;;;;-1:-1:-1;;;;;40874:28:0;;;45031:255;;;;;;;;;;;;;:::i;31643:164::-;;;;;;;;;;-1:-1:-1;31643:164:0;;;;;:::i;:::-;-1:-1:-1;;;;;31764:25:0;;;31740:4;31764:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;31643:164;14390:192;;;;;;;;;;-1:-1:-1;14390:192:0;;;;;:::i;:::-;;:::i;28480:305::-;28582:4;-1:-1:-1;;;;;;28619:40:0;;-1:-1:-1;;;28619:40:0;;:105;;-1:-1:-1;;;;;;;28676:48:0;;-1:-1:-1;;;28676:48:0;28619:105;:158;;;-1:-1:-1;;;;;;;;;;15609:40:0;;;28741:36;28599:178;28480:305;-1:-1:-1;;28480:305:0:o;29425:100::-;29479:13;29512:5;29505:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29425:100;:::o;30984:221::-;31060:7;34467:16;;;:7;:16;;;;;;-1:-1:-1;;;;;34467:16:0;31080:73;;;;-1:-1:-1;;;31080:73:0;;13238:2:1;31080:73:0;;;13220:21:1;13277:2;13257:18;;;13250:30;13316:34;13296:18;;;13289:62;-1:-1:-1;;;13367:18:1;;;13360:42;13419:19;;31080:73:0;;;;;;;;;-1:-1:-1;31173:24:0;;;;:15;:24;;;;;;-1:-1:-1;;;;;31173:24:0;;30984:221::o;30507:411::-;30588:13;30604:23;30619:7;30604:14;:23::i;:::-;30588:39;;30652:5;-1:-1:-1;;;;;30646:11:0;:2;-1:-1:-1;;;;;30646:11:0;;;30638:57;;;;-1:-1:-1;;;30638:57:0;;14838:2:1;30638:57:0;;;14820:21:1;14877:2;14857:18;;;14850:30;14916:34;14896:18;;;14889:62;-1:-1:-1;;;14967:18:1;;;14960:31;15008:19;;30638:57:0;14636:397:1;30638:57:0;12446:10;-1:-1:-1;;;;;30730:21:0;;;;:62;;-1:-1:-1;30755:37:0;30772:5;12446:10;31643:164;:::i;30755:37::-;30708:168;;;;-1:-1:-1;;;30708:168:0;;11274:2:1;30708:168:0;;;11256:21:1;11313:2;11293:18;;;11286:30;11352:34;11332:18;;;11325:62;11423:26;11403:18;;;11396:54;11467:19;;30708:168:0;11072:420:1;30708:168:0;30889:21;30898:2;30902:7;30889:8;:21::i;:::-;30577:341;30507:411;;:::o;42753:144::-;13536:7;13563:6;-1:-1:-1;;;;;13563:6:0;12446:10;13710:23;13702:68;;;;-1:-1:-1;;;13702:68:0;;;;;;;:::i;:::-;42821:10:::1;:21:::0;;-1:-1:-1;;;;;;42821:21:0::1;-1:-1:-1::0;;;;;42821:21:0;::::1;::::0;;::::1;::::0;;;42858:31:::1;::::0;6281:51:1;;;42858:31:0::1;::::0;6269:2:1;6254:18;42858:31:0::1;;;;;;;;42753:144:::0;:::o;31874:339::-;32069:41;12446:10;32102:7;32069:18;:41::i;:::-;32061:103;;;;-1:-1:-1;;;32061:103:0;;;;;;;:::i;:::-;32177:28;32187:4;32193:2;32197:7;32177:9;:28::i;42905:134::-;13536:7;13563:6;-1:-1:-1;;;;;13563:6:0;12446:10;13710:23;13702:68;;;;-1:-1:-1;;;13702:68:0;;;;;;;:::i;:::-;42977:10:::1;::::0;;::::1;::::0;;::::1;42976:11;-1:-1:-1::0;;42963:24:0;;::::1;::::0;::::1;::::0;;;43003:28:::1;::::0;43020:10;;7001:14:1;6994:22;6976:41;;43003:28:0::1;::::0;6964:2:1;6949:18;43003:28:0::1;;;;;;;42905:134::o:0;43300:149::-;13536:7;13563:6;-1:-1:-1;;;;;13563:6:0;12446:10;13710:23;13702:68;;;;-1:-1:-1;;;13702:68:0;;;;;;;:::i;:::-;43375:9:::1;:22:::0;;;43413:28:::1;::::0;17465:25:1;;;43413:28:0::1;::::0;17453:2:1;17438:18;43413:28:0::1;17319:177:1::0;43457:149:0;13536:7;13563:6;-1:-1:-1;;;;;13563:6:0;12446:10;13710:23;13702:68;;;;-1:-1:-1;;;13702:68:0;;;;;;;:::i;:::-;43532:9:::1;:22:::0;;;43570:28:::1;::::0;17465:25:1;;;43570:28:0::1;::::0;17453:2:1;17438:18;43570:28:0::1;17319:177:1::0;32284:185:0;32422:39;32439:4;32445:2;32449:7;32422:39;;;;;;;;;;;;:16;:39::i;44424:157::-;13536:7;13563:6;-1:-1:-1;;;;;13563:6:0;12446:10;13710:23;13702:68;;;;-1:-1:-1;;;13702:68:0;;;;;;;:::i;:::-;44501:27:::1;44512:15;44501:10;:27::i;:::-;44544:29;::::0;17465:25:1;;;44544:29:0::1;::::0;17453:2:1;17438:18;44544:29:0::1;17319:177:1::0;42450:140:0;13536:7;13563:6;-1:-1:-1;;;;;13563:6:0;12446:10;13710:23;13702:68;;;;-1:-1:-1;;;13702:68:0;;;;;;;:::i;:::-;42524:18;;::::1;::::0;:7:::1;::::0;:18:::1;::::0;::::1;::::0;::::1;:::i;:::-;;42558:24;42573:8;42558:24;;;;;;:::i;29119:239::-:0;29191:7;29227:16;;;:7;:16;;;;;;-1:-1:-1;;;;;29227:16:0;29262:19;29254:73;;;;-1:-1:-1;;;29254:73:0;;12467:2:1;29254:73:0;;;12449:21:1;12506:2;12486:18;;;12479:30;12545:34;12525:18;;;12518:62;-1:-1:-1;;;12596:18:1;;;12589:39;12645:19;;29254:73:0;12265:405:1;41020:26:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;28849:208::-;28921:7;-1:-1:-1;;;;;28949:19:0;;28941:74;;;;-1:-1:-1;;;28941:74:0;;12056:2:1;28941:74:0;;;12038:21:1;12095:2;12075:18;;;12068:30;12134:34;12114:18;;;12107:62;-1:-1:-1;;;12185:18:1;;;12178:40;12235:19;;28941:74:0;11854:406:1;28941:74:0;-1:-1:-1;;;;;;29033:16:0;;;;;:9;:16;;;;;;;28849:208::o;14141:94::-;13536:7;13563:6;-1:-1:-1;;;;;13563:6:0;12446:10;13710:23;13702:68;;;;-1:-1:-1;;;13702:68:0;;;;;;;:::i;:::-;14206:21:::1;14224:1;14206:9;:21::i;:::-;14141:94::o:0;45296:181::-;45361:13;;;;;-1:-1:-1;;;;;45361:13:0;45347:10;:27;;:55;;-1:-1:-1;45392:10:0;;-1:-1:-1;;;;;45392:10:0;45378;:24;45347:55;45339:108;;;;-1:-1:-1;;;45339:108:0;;17112:2:1;45339:108:0;;;17094:21:1;17151:2;17131:18;;;17124:30;17190:34;17170:18;;;17163:62;-1:-1:-1;;;17241:18:1;;;17234:38;17289:19;;45339:108:0;16910:404:1;45339:108:0;45458:11;:9;:11::i;42598:147::-;13536:7;13563:6;-1:-1:-1;;;;;13563:6:0;12446:10;13710:23;13702:68;;;;-1:-1:-1;;;13702:68:0;;;;;;;:::i;:::-;42666:13:::1;:24:::0;;-1:-1:-1;;;;;;42666:24:0::1;;-1:-1:-1::0;;;;;42666:24:0;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;42706:31:::1;::::0;6281:51:1;;;42706:31:0::1;::::0;6269:2:1;6254:18;42706:31:0::1;6135:203:1::0;29594:104:0;29650:13;29683:7;29676:14;;;;;:::i;31277:295::-;-1:-1:-1;;;;;31380:24:0;;12446:10;31380:24;;31372:62;;;;-1:-1:-1;;;31372:62:0;;9394:2:1;31372:62:0;;;9376:21:1;9433:2;9413:18;;;9406:30;9472:27;9452:18;;;9445:55;9517:18;;31372:62:0;9192:349:1;31372:62:0;12446:10;31447:32;;;;:18;:32;;;;;;;;-1:-1:-1;;;;;31447:42:0;;;;;;;;;;;;:53;;-1:-1:-1;;31447:53:0;;;;;;;;;;31516:48;;6976:41:1;;;31447:42:0;;12446:10;31516:48;;6949:18:1;31516:48:0;;;;;;;31277:295;;:::o;43614:348::-;43690:10;;;;43682:44;;;;-1:-1:-1;;;43682:44:0;;16417:2:1;43682:44:0;;;16399:21:1;16456:2;16436:18;;;16429:30;-1:-1:-1;;;16475:18:1;;;16468:51;16536:18;;43682:44:0;16215:345:1;43682:44:0;43764:9;;43745:15;:28;;43737:69;;;;-1:-1:-1;;;43737:69:0;;11699:2:1;43737:69:0;;;11681:21:1;11738:2;11718:18;;;11711:30;11777;11757:18;;;11750:58;11825:18;;43737:69:0;11497:352:1;43737:69:0;43838:9;;:30;;43852:15;43838:13;:30::i;:::-;43825:9;:43;;43817:97;;;;-1:-1:-1;;;43817:97:0;;9748:2:1;43817:97:0;;;9730:21:1;9787:2;9767:18;;;9760:30;9826:34;9806:18;;;9799:62;-1:-1:-1;;;9877:18:1;;;9870:39;9926:19;;43817:97:0;9546:405:1;43817:97:0;43927:27;43938:15;43927:10;:27::i;:::-;43614:348;:::o;32540:328::-;32715:41;12446:10;32748:7;32715:18;:41::i;:::-;32707:103;;;;-1:-1:-1;;;32707:103:0;;;;;;;:::i;:::-;32821:39;32835:4;32841:2;32845:7;32854:5;32821:13;:39::i;:::-;32540:328;;;;:::o;42144:296::-;34443:4;34467:16;;;:7;:16;;;;;;42209:13;;-1:-1:-1;;;;;34467:16:0;42235:76;;;;-1:-1:-1;;;42235:76:0;;14422:2:1;42235:76:0;;;14404:21:1;14461:2;14441:18;;;14434:30;14500:34;14480:18;;;14473:62;-1:-1:-1;;;14551:18:1;;;14544:45;14606:19;;42235:76:0;14220:411:1;42235:76:0;42355:1;42337:7;42331:21;;;;;:::i;:::-;;;:25;:101;;;;;;;;;;;;;;;;;42393:7;42407:18;:7;:16;:18::i;:::-;42376:50;;;;;;;;;:::i;:::-;;;;;;;;;;;;;42324:108;42144:296;-1:-1:-1;;42144:296:0:o;43047:245::-;13536:7;13563:6;-1:-1:-1;;;;;13563:6:0;12446:10;13710:23;13702:68;;;;-1:-1:-1;;;13702:68:0;;;;;;;:::i;:::-;43150:11:::1;;43134:12;:27;;43126:73;;;::::0;-1:-1:-1;;;43126:73:0;;15240:2:1;43126:73:0::1;::::0;::::1;15222:21:1::0;15279:2;15259:18;;;15252:30;15318:34;15298:18;;;15291:62;-1:-1:-1;;;15369:18:1;;;15362:31;15410:19;;43126:73:0::1;15038:397:1::0;43126:73:0::1;43210:11;:26:::0;;;43252:32:::1;::::0;17465:25:1;;;43252:32:0::1;::::0;17453:2:1;17438:18;43252:32:0::1;17319:177:1::0;45031:255:0;13536:7;13563:6;-1:-1:-1;;;;;13563:6:0;12446:10;13710:23;13702:68;;;;-1:-1:-1;;;13702:68:0;;;;;;;:::i;:::-;45122:1:::1;45098:21;:25;45090:65;;;::::0;-1:-1:-1;;;45090:65:0;;10918:2:1;45090:65:0::1;::::0;::::1;10900:21:1::0;10957:2;10937:18;;;10930:30;10996:29;10976:18;;;10969:57;11043:18;;45090:65:0::1;10716:351:1::0;45090:65:0::1;45167:12;13563:6:::0;;45185:46:::1;::::0;-1:-1:-1;;;;;13563:6:0;;;;45205:21:::1;::::0;45167:12;45185:46;45167:12;45185:46;45205:21;13563:6;45185:46:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45166:65;;;45250:7;45242:36;;;::::0;-1:-1:-1;;;45242:36:0;;16767:2:1;45242:36:0::1;::::0;::::1;16749:21:1::0;16806:2;16786:18;;;16779:30;-1:-1:-1;;;16825:18:1;;;16818:46;16881:18;;45242:36:0::1;16565:340:1::0;14390:192:0;13536:7;13563:6;-1:-1:-1;;;;;13563:6:0;12446:10;13710:23;13702:68;;;;-1:-1:-1;;;13702:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14479:22:0;::::1;14471:73;;;::::0;-1:-1:-1;;;14471:73:0;;7873:2:1;14471:73:0::1;::::0;::::1;7855:21:1::0;7912:2;7892:18;;;7885:30;7951:34;7931:18;;;7924:62;-1:-1:-1;;;8002:18:1;;;7995:36;8048:19;;14471:73:0::1;7671:402:1::0;14471:73:0::1;14555:19;14565:8;14555:9;:19::i;38360:174::-:0;38435:24;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;38435:29:0;-1:-1:-1;;;;;38435:29:0;;;;;;;;:24;;38489:23;38435:24;38489:14;:23::i;:::-;-1:-1:-1;;;;;38480:46:0;;;;;;;;;;;38360:174;;:::o;34672:348::-;34765:4;34467:16;;;:7;:16;;;;;;-1:-1:-1;;;;;34467:16:0;34782:73;;;;-1:-1:-1;;;34782:73:0;;10505:2:1;34782:73:0;;;10487:21:1;10544:2;10524:18;;;10517:30;10583:34;10563:18;;;10556:62;-1:-1:-1;;;10634:18:1;;;10627:42;10686:19;;34782:73:0;10303:408:1;34782:73:0;34866:13;34882:23;34897:7;34882:14;:23::i;:::-;34866:39;;34935:5;-1:-1:-1;;;;;34924:16:0;:7;-1:-1:-1;;;;;34924:16:0;;:51;;;;34968:7;-1:-1:-1;;;;;34944:31:0;:20;34956:7;34944:11;:20::i;:::-;-1:-1:-1;;;;;34944:31:0;;34924:51;:87;;;-1:-1:-1;;;;;;31764:25:0;;;31740:4;31764:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;34979:32;34916:96;34672:348;-1:-1:-1;;;;34672:348:0:o;37664:578::-;37823:4;-1:-1:-1;;;;;37796:31:0;:23;37811:7;37796:14;:23::i;:::-;-1:-1:-1;;;;;37796:31:0;;37788:85;;;;-1:-1:-1;;;37788:85:0;;14012:2:1;37788:85:0;;;13994:21:1;14051:2;14031:18;;;14024:30;14090:34;14070:18;;;14063:62;-1:-1:-1;;;14141:18:1;;;14134:39;14190:19;;37788:85:0;13810:405:1;37788:85:0;-1:-1:-1;;;;;37892:16:0;;37884:65;;;;-1:-1:-1;;;37884:65:0;;8989:2:1;37884:65:0;;;8971:21:1;9028:2;9008:18;;;9001:30;9067:34;9047:18;;;9040:62;-1:-1:-1;;;9118:18:1;;;9111:34;9162:19;;37884:65:0;8787:400:1;37884:65:0;38066:29;38083:1;38087:7;38066:8;:29::i;:::-;-1:-1:-1;;;;;38108:15:0;;;;;;:9;:15;;;;;:20;;38127:1;;38108:15;:20;;38127:1;;38108:20;:::i;:::-;;;;-1:-1:-1;;;;;;;38139:13:0;;;;;;:9;:13;;;;;:18;;38156:1;;38139:13;:18;;38156:1;;38139:18;:::i;:::-;;;;-1:-1:-1;;38168:16:0;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;38168:21:0;-1:-1:-1;;;;;38168:21:0;;;;;;;;;38207:27;;38168:16;;38207:27;;;;;;;37664:578;;;:::o;43970:446::-;44076:11;;44040;;:32;;44056:15;44040;:32::i;:::-;:47;;44032:88;;;;-1:-1:-1;;;44032:88:0;;15642:2:1;44032:88:0;;;15624:21:1;15681:2;15661:18;;;15654:30;15720;15700:18;;;15693:58;15768:18;;44032:88:0;15440:352:1;44032:88:0;44149:11;;44133:13;44171:238;44191:15;44187:1;:19;44171:238;;;44228:10;44237:1;44228:10;;:::i;:::-;44267:11;;44228:10;;-1:-1:-1;44267:18:0;;44283:1;44267:15;:18::i;:::-;44253:11;:32;44302:28;44312:10;44324:5;44302:9;:28::i;:::-;44374:5;44362:10;44350:47;44381:15;44374:5;44381:8;:15::i;:::-;44350:47;;;;;;:::i;:::-;;;;;;;;44208:3;;;;:::i;:::-;;;;44171:238;;14590:173;14646:16;14665:6;;-1:-1:-1;;;;;14682:17:0;;;-1:-1:-1;;;;;;14682:17:0;;;;;;14715:40;;14665:6;;;;;;;14715:40;;14646:16;14715:40;14635:128;14590:173;:::o;44589:432::-;44662:1;44638:21;:25;44630:61;;;;-1:-1:-1;;;44630:61:0;;8280:2:1;44630:61:0;;;8262:21:1;8319:2;8299:18;;;8292:30;8358:25;8338:18;;;8331:53;8401:18;;44630:61:0;8078:347:1;44630:61:0;44778:13;;44816:11;;44720:21;;44702:15;;44778:13;;;;-1:-1:-1;;;;;44778:13:0;;44804:33;;44833:3;;44804:24;;44720:21;;-1:-1:-1;;;44816:11:0;;;;44804;:24::i;:::-;:28;;:33::i;:::-;44778:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;44879:10:0;;44752:90;;-1:-1:-1;44854:19:0;;-1:-1:-1;;;;;44879:10:0;;;44902:30;;44928:3;;44902:21;;:7;;-1:-1:-1;;;44914:8:0;;;;44902:11;:21::i;:30::-;44879:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;44853:84;;;44958:14;:32;;;;;44976:14;44958:32;44950:63;;;;-1:-1:-1;;;44950:63:0;;10158:2:1;44950:63:0;;;10140:21:1;10197:2;10177:18;;;10170:30;-1:-1:-1;;;10216:18:1;;;10209:48;10274:18;;44950:63:0;9956:342:1;8397:98:0;8455:7;8482:5;8486:1;8482;:5;:::i;:::-;8475:12;8397:98;-1:-1:-1;;;8397:98:0:o;33750:315::-;33907:28;33917:4;33923:2;33927:7;33907:9;:28::i;:::-;33954:48;33977:4;33983:2;33987:7;33996:5;33954:22;:48::i;:::-;33946:111;;;;-1:-1:-1;;;33946:111:0;;;;;;;:::i;15892:723::-;15948:13;16169:10;16165:53;;-1:-1:-1;;16196:10:0;;;;;;;;;;;;-1:-1:-1;;;16196:10:0;;;;;15892:723::o;16165:53::-;16243:5;16228:12;16284:78;16291:9;;16284:78;;16317:8;;;;:::i;:::-;;-1:-1:-1;16340:10:0;;-1:-1:-1;16348:2:0;16340:10;;:::i;:::-;;;16284:78;;;16372:19;16404:6;16394:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16394:17:0;;16372:39;;16422:154;16429:10;;16422:154;;16456:11;16466:1;16456:11;;:::i;:::-;;-1:-1:-1;16525:10:0;16533:2;16525:5;:10;:::i;:::-;16512:24;;:2;:24;:::i;:::-;16499:39;;16482:6;16489;16482:14;;;;;;;;:::i;:::-;;;;:56;-1:-1:-1;;;;;16482:56:0;;;;;;;;-1:-1:-1;16553:11:0;16562:2;16553:11;;:::i;:::-;;;16422:154;;7659:98;7717:7;7744:5;7748:1;7744;:5;:::i;35362:110::-;35438:26;35448:2;35452:7;35438:26;;;;;;;;;;;;:9;:26::i;:::-;35362:110;;:::o;8796:98::-;8854:7;8881:5;8885:1;8881;:5;:::i;39099:799::-;39254:4;-1:-1:-1;;;;;39275:13:0;;18667:20;18715:8;39271:620;;39311:72;;-1:-1:-1;;;39311:72:0;;-1:-1:-1;;;;;39311:36:0;;;;;:72;;12446:10;;39362:4;;39368:7;;39377:5;;39311:72;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;39311:72:0;;;;;;;;-1:-1:-1;;39311:72:0;;;;;;;;;;;;:::i;:::-;;;39307:529;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;39553:13:0;;39549:272;;39596:60;;-1:-1:-1;;;39596:60:0;;;;;;;:::i;39549:272::-;39771:6;39765:13;39756:6;39752:2;39748:15;39741:38;39307:529;-1:-1:-1;;;;;;39434:51:0;-1:-1:-1;;;39434:51:0;;-1:-1:-1;39427:58:0;;39271:620;-1:-1:-1;39875:4:0;39099:799;;;;;;:::o;35699:321::-;35829:18;35835:2;35839:7;35829:5;:18::i;:::-;35880:54;35911:1;35915:2;35919:7;35928:5;35880:22;:54::i;:::-;35858:154;;;;-1:-1:-1;;;35858:154:0;;;;;;;:::i;36356:382::-;-1:-1:-1;;;;;36436:16:0;;36428:61;;;;-1:-1:-1;;;36428:61:0;;12877:2:1;36428:61:0;;;12859:21:1;;;12896:18;;;12889:30;12955:34;12935:18;;;12928:62;13007:18;;36428:61:0;12675:356:1;36428:61:0;34443:4;34467:16;;;:7;:16;;;;;;-1:-1:-1;;;;;34467:16:0;:30;36500:58;;;;-1:-1:-1;;;36500:58:0;;8632:2:1;36500:58:0;;;8614:21:1;8671:2;8651:18;;;8644:30;8710;8690:18;;;8683:58;8758:18;;36500:58:0;8430:352:1;36500:58:0;-1:-1:-1;;;;;36629:13:0;;;;;;:9;:13;;;;;:18;;36646:1;;36629:13;:18;;36646:1;;36629:18;:::i;:::-;;;;-1:-1:-1;;36658:16:0;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;36658:21:0;-1:-1:-1;;;;;36658:21:0;;;;;;;;36697:33;;36658:16;;;36697:33;;36658:16;;36697:33;36356:382;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:631:1;78:5;108:18;149:2;141:6;138:14;135:40;;;155:18;;:::i;:::-;230:2;224:9;198:2;284:15;;-1:-1:-1;;280:24:1;;;306:2;276:33;272:42;260:55;;;330:18;;;350:22;;;327:46;324:72;;;376:18;;:::i;:::-;416:10;412:2;405:22;445:6;436:15;;475:6;467;460:22;515:3;506:6;501:3;497:16;494:25;491:45;;;532:1;529;522:12;491:45;582:6;577:3;570:4;562:6;558:17;545:44;637:1;630:4;621:6;613;609:19;605:30;598:41;;;;14:631;;;;;:::o;650:173::-;718:20;;-1:-1:-1;;;;;767:31:1;;757:42;;747:70;;813:1;810;803:12;747:70;650:173;;;:::o;828:186::-;887:6;940:2;928:9;919:7;915:23;911:32;908:52;;;956:1;953;946:12;908:52;979:29;998:9;979:29;:::i;1019:260::-;1087:6;1095;1148:2;1136:9;1127:7;1123:23;1119:32;1116:52;;;1164:1;1161;1154:12;1116:52;1187:29;1206:9;1187:29;:::i;:::-;1177:39;;1235:38;1269:2;1258:9;1254:18;1235:38;:::i;:::-;1225:48;;1019:260;;;;;:::o;1284:328::-;1361:6;1369;1377;1430:2;1418:9;1409:7;1405:23;1401:32;1398:52;;;1446:1;1443;1436:12;1398:52;1469:29;1488:9;1469:29;:::i;:::-;1459:39;;1517:38;1551:2;1540:9;1536:18;1517:38;:::i;:::-;1507:48;;1602:2;1591:9;1587:18;1574:32;1564:42;;1284:328;;;;;:::o;1617:666::-;1712:6;1720;1728;1736;1789:3;1777:9;1768:7;1764:23;1760:33;1757:53;;;1806:1;1803;1796:12;1757:53;1829:29;1848:9;1829:29;:::i;:::-;1819:39;;1877:38;1911:2;1900:9;1896:18;1877:38;:::i;:::-;1867:48;;1962:2;1951:9;1947:18;1934:32;1924:42;;2017:2;2006:9;2002:18;1989:32;2044:18;2036:6;2033:30;2030:50;;;2076:1;2073;2066:12;2030:50;2099:22;;2152:4;2144:13;;2140:27;-1:-1:-1;2130:55:1;;2181:1;2178;2171:12;2130:55;2204:73;2269:7;2264:2;2251:16;2246:2;2242;2238:11;2204:73;:::i;:::-;2194:83;;;1617:666;;;;;;;:::o;2288:347::-;2353:6;2361;2414:2;2402:9;2393:7;2389:23;2385:32;2382:52;;;2430:1;2427;2420:12;2382:52;2453:29;2472:9;2453:29;:::i;:::-;2443:39;;2532:2;2521:9;2517:18;2504:32;2579:5;2572:13;2565:21;2558:5;2555:32;2545:60;;2601:1;2598;2591:12;2545:60;2624:5;2614:15;;;2288:347;;;;;:::o;2640:254::-;2708:6;2716;2769:2;2757:9;2748:7;2744:23;2740:32;2737:52;;;2785:1;2782;2775:12;2737:52;2808:29;2827:9;2808:29;:::i;:::-;2798:39;2884:2;2869:18;;;;2856:32;;-1:-1:-1;;;2640:254:1:o;2899:245::-;2957:6;3010:2;2998:9;2989:7;2985:23;2981:32;2978:52;;;3026:1;3023;3016:12;2978:52;3065:9;3052:23;3084:30;3108:5;3084:30;:::i;3149:249::-;3218:6;3271:2;3259:9;3250:7;3246:23;3242:32;3239:52;;;3287:1;3284;3277:12;3239:52;3319:9;3313:16;3338:30;3362:5;3338:30;:::i;3403:450::-;3472:6;3525:2;3513:9;3504:7;3500:23;3496:32;3493:52;;;3541:1;3538;3531:12;3493:52;3581:9;3568:23;3614:18;3606:6;3603:30;3600:50;;;3646:1;3643;3636:12;3600:50;3669:22;;3722:4;3714:13;;3710:27;-1:-1:-1;3700:55:1;;3751:1;3748;3741:12;3700:55;3774:73;3839:7;3834:2;3821:16;3816:2;3812;3808:11;3774:73;:::i;3858:180::-;3917:6;3970:2;3958:9;3949:7;3945:23;3941:32;3938:52;;;3986:1;3983;3976:12;3938:52;-1:-1:-1;4009:23:1;;3858:180;-1:-1:-1;3858:180:1:o;4043:257::-;4084:3;4122:5;4116:12;4149:6;4144:3;4137:19;4165:63;4221:6;4214:4;4209:3;4205:14;4198:4;4191:5;4187:16;4165:63;:::i;:::-;4282:2;4261:15;-1:-1:-1;;4257:29:1;4248:39;;;;4289:4;4244:50;;4043:257;-1:-1:-1;;4043:257:1:o;4305:185::-;4347:3;4385:5;4379:12;4400:52;4445:6;4440:3;4433:4;4426:5;4422:16;4400:52;:::i;:::-;4468:16;;;;;4305:185;-1:-1:-1;;4305:185:1:o;4614:1306::-;4891:3;4920:1;4953:6;4947:13;4983:3;5005:1;5033:9;5029:2;5025:18;5015:28;;5093:2;5082:9;5078:18;5115;5105:61;;5159:4;5151:6;5147:17;5137:27;;5105:61;5185:2;5233;5225:6;5222:14;5202:18;5199:38;5196:165;;;-1:-1:-1;;;5260:33:1;;5316:4;5313:1;5306:15;5346:4;5267:3;5334:17;5196:165;5377:18;5404:104;;;;5522:1;5517:320;;;;5370:467;;5404:104;-1:-1:-1;;5437:24:1;;5425:37;;5482:16;;;;-1:-1:-1;5404:104:1;;5517:320;17763:1;17756:14;;;17800:4;17787:18;;5612:1;5626:165;5640:6;5637:1;5634:13;5626:165;;;5718:14;;5705:11;;;5698:35;5761:16;;;;5655:10;;5626:165;;;5630:3;;5820:6;5815:3;5811:16;5804:23;;5370:467;;;;;;;5853:61;5879:34;5909:3;-1:-1:-1;;;4560:16:1;;4601:1;4592:11;;4495:114;5879:34;5871:6;5853:61;:::i;:::-;5846:68;4614:1306;-1:-1:-1;;;;;4614:1306:1:o;6343:488::-;-1:-1:-1;;;;;6612:15:1;;;6594:34;;6664:15;;6659:2;6644:18;;6637:43;6711:2;6696:18;;6689:34;;;6759:3;6754:2;6739:18;;6732:31;;;6537:4;;6780:45;;6805:19;;6797:6;6780:45;:::i;:::-;6772:53;6343:488;-1:-1:-1;;;;;;6343:488:1:o;7028:219::-;7177:2;7166:9;7159:21;7140:4;7197:44;7237:2;7226:9;7222:18;7214:6;7197:44;:::i;7252:414::-;7454:2;7436:21;;;7493:2;7473:18;;;7466:30;7532:34;7527:2;7512:18;;7505:62;-1:-1:-1;;;7598:2:1;7583:18;;7576:48;7656:3;7641:19;;7252:414::o;13449:356::-;13651:2;13633:21;;;13670:18;;;13663:30;13729:34;13724:2;13709:18;;13702:62;13796:2;13781:18;;13449:356::o;15797:413::-;15999:2;15981:21;;;16038:2;16018:18;;;16011:30;16077:34;16072:2;16057:18;;16050:62;-1:-1:-1;;;16143:2:1;16128:18;;16121:47;16200:3;16185:19;;15797:413::o;17816:128::-;17856:3;17887:1;17883:6;17880:1;17877:13;17874:39;;;17893:18;;:::i;:::-;-1:-1:-1;17929:9:1;;17816:128::o;17949:120::-;17989:1;18015;18005:35;;18020:18;;:::i;:::-;-1:-1:-1;18054:9:1;;17949:120::o;18074:168::-;18114:7;18180:1;18176;18172:6;18168:14;18165:1;18162:21;18157:1;18150:9;18143:17;18139:45;18136:71;;;18187:18;;:::i;:::-;-1:-1:-1;18227:9:1;;18074:168::o;18247:125::-;18287:4;18315:1;18312;18309:8;18306:34;;;18320:18;;:::i;:::-;-1:-1:-1;18357:9:1;;18247:125::o;18377:258::-;18449:1;18459:113;18473:6;18470:1;18467:13;18459:113;;;18549:11;;;18543:18;18530:11;;;18523:39;18495:2;18488:10;18459:113;;;18590:6;18587:1;18584:13;18581:48;;;-1:-1:-1;;18625:1:1;18607:16;;18600:27;18377:258::o;18640:380::-;18719:1;18715:12;;;;18762;;;18783:61;;18837:4;18829:6;18825:17;18815:27;;18783:61;18890:2;18882:6;18879:14;18859:18;18856:38;18853:161;;;18936:10;18931:3;18927:20;18924:1;18917:31;18971:4;18968:1;18961:15;18999:4;18996:1;18989:15;18853:161;;18640:380;;;:::o;19025:135::-;19064:3;-1:-1:-1;;19085:17:1;;19082:43;;;19105:18;;:::i;:::-;-1:-1:-1;19152:1:1;19141:13;;19025:135::o;19165:112::-;19197:1;19223;19213:35;;19228:18;;:::i;:::-;-1:-1:-1;19262:9:1;;19165:112::o;19282:127::-;19343:10;19338:3;19334:20;19331:1;19324:31;19374:4;19371:1;19364:15;19398:4;19395:1;19388:15;19414:127;19475:10;19470:3;19466:20;19463:1;19456:31;19506:4;19503:1;19496:15;19530:4;19527:1;19520:15;19546:127;19607:10;19602:3;19598:20;19595:1;19588:31;19638:4;19635:1;19628:15;19662:4;19659:1;19652:15;19678:127;19739:10;19734:3;19730:20;19727:1;19720:31;19770:4;19767:1;19760:15;19794:4;19791:1;19784:15;19810:131;-1:-1:-1;;;;;;19884:32:1;;19874:43;;19864:71;;19931:1;19928;19921:12

Swarm Source

ipfs://c8e7de5aa8e1d2957f72973625e0d9592ab2c555d7be56d65b60de80245c5235
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.