ERC-721
Overview
Max Total Supply
0 N2MOwners
Holders
2,245
Market
Volume (24H)
N/A
Min Price (24H)
N/A
Max Price (24H)
N/A
Other Info
Token Contract
Balance
1 N2MOwnersLoading...
Loading
Loading...
Loading
Loading...
Loading
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.
Contract Source Code Verified (Exact Match)
Contract Name:
N2MFactory
Compiler Version
v0.8.27+commit.40a35a09
Optimization Enabled:
Yes with 151 runs
Other Settings:
cancun EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
1234567891011121314151617181920212223242526/** ---------------------------------------------------------------------------- //* //* Smart contract generated by https://nfts2me.com //* //* .::. //* ...... //* .... ::. //* .:.. :: ... //* ..:. :: ... //* ::. ..:-- ::. ... //* .: ..:::::-==: :::::.. : //* .: :::::::-====: :::::::: : //* .: :::::::-======. :::::::: : //* .: :::::::-=======-:::::::: : //* .: :::::::-========-::::::: : //* .: ::::::::========-::::::: : //* .: :::::::. .======-::::::: : //* .: :::::::. :====-::::::: : //* .: .:::::. -==-:::::. : //* .:. .:. .--:.. ... //* .:. :. ... //* .... :. .... //* .:. .:. //* .::::. //* :--. //* //
1234567891011121314151617181920212223242526/** ---------------------------------------------------------------------------- //* //* Smart contract generated by https://nfts2me.com //* //* .::. //* ...... //* .... ::. //* .:.. :: ... //* ..:. :: ... //* ::. ..:-- ::. ... //* .: ..:::::-==: :::::.. : //* .: :::::::-====: :::::::: : //* .: :::::::-======. :::::::: : //* .: :::::::-=======-:::::::: : //* .: :::::::-========-::::::: : //* .: ::::::::========-::::::: : //* .: :::::::. .======-::::::: : //* .: :::::::. :====-::::::: : //* .: .:::::. -==-:::::. : //* .:. .:. .--:.. ... //* .:. :. ... //* .... :. .... //* .:. .:. //* .::::. //* :--. //* //
1234567891011121314151617181920212223242526// SPDX-License-Identifier: CC0-1.0pragma solidity ^0.8.27;interface IERC4907 {/// Logged when the user of a token assigns a new user or updates expires/// @notice Emitted when the `user` of an NFT or the `expires` of the `user` is changed/// The zero address for user indicates that there is no user addressevent UpdateUser(uint256 indexed tokenId, address indexed user, uint64 expires);/// @notice set the user and expires of a NFT/// @dev The zero address indicates there is no user/// Throws if `tokenId` is not valid NFT/// @param user The new user of the NFT/// @param expires UNIX timestamp, The new user could use the NFT before expiresfunction setUser(uint256 tokenId, address user, uint64 expires) external ;/// @notice Get the user address of an NFT/// @dev The zero address indicates that there is no user or the user is expired/// @param tokenId The NFT to get the user address for/// @return The user address for this NFTfunction userOf(uint256 tokenId) external view returns(address);/// @notice Get the user expires of an NFT/// @dev The zero value indicates that there is no user/// @param tokenId The NFT to get the user expires for
123456789101112131415161718192021// SPDX-License-Identifier: CC0-1.0pragma solidity ^0.8.27;interface IERC5192 {/// @notice Emitted when the locking status is changed to locked./// @dev If a token is minted and the status is locked, this event should be emitted./// @param tokenId The identifier for a token.event Locked(uint256 tokenId);/// @notice Emitted when the locking status is changed to unlocked./// @dev If a token is minted and the status is unlocked, this event should be emitted./// @param tokenId The identifier for a token.event Unlocked(uint256 tokenId);/// @notice Returns the locking status of an Soulbound Token/// @dev SBTs assigned to zero address are considered invalid, and queries/// about them do throw./// @param tokenId The identifier for an SBT.function locked(uint256 tokenId) external view returns (bool);}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: CC0-1.0pragma solidity ^0.8.27;interface IERC7496 {/// Eventsevent TraitUpdated(bytes32 indexed traitKey, uint256 tokenId, bytes32 traitValue);event TraitUpdatedRange(bytes32 indexed traitKey, uint256 fromTokenId, uint256 toTokenId);event TraitUpdatedRangeUniformValue(bytes32 indexed traitKey, uint256 fromTokenId, uint256 toTokenId, bytes32 traitValue);event TraitUpdatedList(bytes32 indexed traitKey, uint256[] tokenIds);event TraitUpdatedListUniformValue(bytes32 indexed traitKey, uint256[] tokenIds, bytes32 traitValue);event TraitMetadataURIUpdated();/// Gettersfunction getTraitValue(uint256 tokenId, bytes32 traitKey) external view returns (bytes32 traitValue);function getTraitValues(uint256 tokenId, bytes32[] calldata traitKeys)externalviewreturns (bytes32[] memory traitValues);function getTraitMetadataURI() external view returns (string memory uri);/// Settersfunction setTrait(uint256 tokenId, bytes32 traitKey, bytes32 traitValue) external;/// Errors
12345678// SPDX-License-Identifier: CC0-1.0pragma solidity ^0.8.27;interface IERC7572 {function contractURI() external view returns (string memory);event ContractURIUpdated();}
1234567891011121314151617181920212223242526/** ---------------------------------------------------------------------------- //* //* Smart contract generated by https://nfts2me.com //* //* .::. //* ...... //* .... ::. //* .:.. :: ... //* ..:. :: ... //* ::. ..:-- ::. ... //* .: ..:::::-==: :::::.. : //* .: :::::::-====: :::::::: : //* .: :::::::-======. :::::::: : //* .: :::::::-=======-:::::::: : //* .: :::::::-========-::::::: : //* .: ::::::::========-::::::: : //* .: :::::::. .======-::::::: : //* .: :::::::. :====-::::::: : //* .: .:::::. -==-:::::. : //* .:. .:. .--:.. ... //* .:. :. ... //* .... :. .... //* .:. .:. //* .::::. //* :--. //* //
1234567891011121314151617181920212223242526/** ---------------------------------------------------------------------------- //* //* Smart contract generated by https://nfts2me.com //* //* .::. //* ...... //* .... ::. //* .:.. :: ... //* ..:. :: ... //* ::. ..:-- ::. ... //* .: ..:::::-==: :::::.. : //* .: :::::::-====: :::::::: : //* .: :::::::-======. :::::::: : //* .: :::::::-=======-:::::::: : //* .: :::::::-========-::::::: : //* .: ::::::::========-::::::: : //* .: :::::::. .======-::::::: : //* .: :::::::. :====-::::::: : //* .: .:::::. -==-:::::. : //* .:. .:. .--:.. ... //* .:. :. ... //* .... :. .... //* .:. .:. //* .::::. //* :--. //* //
1234567891011121314151617181920212223242526/** ---------------------------------------------------------------------------- //* //* Smart contract generated by https://nfts2me.com //* //* .::. //* ...... //* .... ::. //* .:.. :: ... //* ..:. :: ... //* ::. ..:-- ::. ... //* .: ..:::::-==: :::::.. : //* .: :::::::-====: :::::::: : //* .: :::::::-======. :::::::: : //* .: :::::::-=======-:::::::: : //* .: :::::::-========-::::::: : //* .: ::::::::========-::::::: : //* .: :::::::. .======-::::::: : //* .: :::::::. :====-::::::: : //* .: .:::::. -==-:::::. : //* .:. .:. .--:.. ... //* .:. :. ... //* .... :. .... //* .:. .:. //* .::::. //* :--. //* //
1234567891011121314151617181920212223242526/** ---------------------------------------------------------------------------- //* //* Smart contract generated by https://nfts2me.com //* //* .::. //* ...... //* .... ::. //* .:.. :: ... //* ..:. :: ... //* ::. ..:-- ::. ... //* .: ..:::::-==: :::::.. : //* .: :::::::-====: :::::::: : //* .: :::::::-======. :::::::: : //* .: :::::::-=======-:::::::: : //* .: :::::::-========-::::::: : //* .: ::::::::========-::::::: : //* .: :::::::. .======-::::::: : //* .: :::::::. :====-::::::: : //* .: .:::::. -==-:::::. : //* .:. .:. .--:.. ... //* .:. :. ... //* .... :. .... //* .:. .:. //* .::::. //* :--. //* //
1234567891011121314151617181920212223242526/** ---------------------------------------------------------------------------- //* //* Smart contract generated by https://nfts2me.com //* //* .::. //* ...... //* .... ::. //* .:.. :: ... //* ..:. :: ... //* ::. ..:-- ::. ... //* .: ..:::::-==: :::::.. : //* .: :::::::-====: :::::::: : //* .: :::::::-======. :::::::: : //* .: :::::::-=======-:::::::: : //* .: :::::::-========-::::::: : //* .: ::::::::========-::::::: : //* .: :::::::. .======-::::::: : //* .: :::::::. :====-::::::: : //* .: .:::::. -==-:::::. : //* .:. .:. .--:.. ... //* .:. :. ... //* .... :. .... //* .:. .:. //* .::::. //* :--. //* //
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/draft-IERC6093.sol)pragma solidity ^0.8.20;/*** @dev Standard ERC20 Errors* Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens.*/interface IERC20Errors {/*** @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.* @param sender Address whose tokens are being transferred.* @param balance Current balance for the interacting account.* @param needed Minimum amount required to perform a transfer.*/error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);/*** @dev Indicates a failure with the token `sender`. Used in transfers.* @param sender Address whose tokens are being transferred.*/error ERC20InvalidSender(address sender);/*** @dev Indicates a failure with the token `receiver`. Used in transfers.* @param receiver Address to which tokens are being transferred.
1234567891011121314151617181920212223// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC2981.sol)pragma solidity ^0.8.20;import {IERC165} from "../utils/introspection/IERC165.sol";/*** @dev Interface for the NFT Royalty Standard.** A standardized way to retrieve royalty payment information for non-fungible tokens (NFTs) to enable universal* support for royalty payments across all NFT marketplaces and ecosystem participants.*/interface IERC2981 is IERC165 {/*** @dev Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of* exchange. The royalty amount is denominated and should be paid in that same unit of exchange.*/function royaltyInfo(uint256 tokenId,uint256 salePrice) external view returns (address receiver, uint256 royaltyAmount);}
123456// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC721.sol)pragma solidity ^0.8.20;import {IERC721} from "../token/ERC721/IERC721.sol";
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/IERC20.sol)pragma solidity ^0.8.20;/*** @dev Interface of the ERC20 standard as defined in the EIP.*/interface IERC20 {/*** @dev Emitted when `value` tokens are moved from one account (`from`) to* another (`to`).** Note that `value` may be zero.*/event Transfer(address indexed from, address indexed to, uint256 value);/*** @dev Emitted when the allowance of a `spender` for an `owner` is set by* a call to {approve}. `value` is the new allowance.*/event Approval(address indexed owner, address indexed spender, uint256 value);/*** @dev Returns the value of tokens in existence.*/
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC721/ERC721.sol)pragma solidity ^0.8.20;import {IERC721} from "./IERC721.sol";import {IERC721Receiver} from "./IERC721Receiver.sol";import {IERC721Metadata} from "./extensions/IERC721Metadata.sol";import {Context} from "../../utils/Context.sol";import {Strings} from "../../utils/Strings.sol";import {IERC165, ERC165} from "../../utils/introspection/ERC165.sol";import {IERC721Errors} from "../../interfaces/draft-IERC6093.sol";/*** @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including* the Metadata extension, but not including the Enumerable extension, which is available separately as* {ERC721Enumerable}.*/abstract contract ERC721 is Context, ERC165, IERC721, IERC721Metadata, IERC721Errors {using Strings for uint256;// Token namestring private _name;// Token symbolstring private _symbol;
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC721/extensions/IERC721Metadata.sol)pragma solidity ^0.8.20;import {IERC721} from "../IERC721.sol";/*** @title ERC-721 Non-Fungible Token Standard, optional metadata extension* @dev See https://eips.ethereum.org/EIPS/eip-721*/interface IERC721Metadata is IERC721 {/*** @dev Returns the token collection name.*/function name() external view returns (string memory);/*** @dev Returns the token collection symbol.*/function symbol() external view returns (string memory);/*** @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.*/function tokenURI(uint256 tokenId) external view returns (string memory);
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC721/IERC721.sol)pragma solidity ^0.8.20;import {IERC165} from "../../utils/introspection/IERC165.sol";/*** @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);
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC721/IERC721Receiver.sol)pragma solidity ^0.8.20;/*** @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 `IERC721Receiver.onERC721Received.selector`.*/function onERC721Received(address operator,address from,uint256 tokenId,bytes calldata data
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)pragma solidity ^0.8.20;/*** @dev Provides information about the current execution context, including the* sender of the transaction and its data. While these are generally available* via msg.sender and msg.data, they should not be accessed in such a direct* manner, since when dealing with meta-transactions the account sending and* paying for execution may not be the actual sender (as far as an application* is concerned).** This contract is only required for intermediate, library-like contracts.*/abstract contract Context {function _msgSender() internal view virtual returns (address) {return msg.sender;}function _msgData() internal view virtual returns (bytes calldata) {return msg.data;}function _contextSuffixLength() internal view virtual returns (uint256) {return 0;
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.0.0) (utils/introspection/ERC165.sol)pragma solidity ^0.8.20;import {IERC165} from "./IERC165.sol";/*** @dev Implementation of the {IERC165} interface.** Contracts that want to implement 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);* }* ```*/abstract contract ERC165 is IERC165 {/*** @dev See {IERC165-supportsInterface}.*/function supportsInterface(bytes4 interfaceId) public view virtual returns (bool) {return interfaceId == type(IERC165).interfaceId;}
12345678910111213141516171819202122232425// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.0.0) (utils/introspection/IERC165.sol)pragma solidity ^0.8.20;/*** @dev Interface of the ERC165 standard, as defined in the* https://eips.ethereum.org/EIPS/eip-165[EIP].** Implementers can declare support of contract interfaces, which can then be* queried by others ({ERC165Checker}).** For an implementation, see {ERC165}.*/interface IERC165 {/*** @dev Returns true if this contract implements the interface defined by* `interfaceId`. See the corresponding* https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]* to learn more about how these ids are created.** This function call must use less than 30 000 gas.*/function supportsInterface(bytes4 interfaceId) external view returns (bool);}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.0.0) (utils/math/Math.sol)pragma solidity ^0.8.20;/*** @dev Standard math utilities missing in the Solidity language.*/library Math {/*** @dev Muldiv operation overflow.*/error MathOverflowedMulDiv();enum Rounding {Floor, // Toward negative infinityCeil, // Toward positive infinityTrunc, // Toward zeroExpand // Away from zero}/*** @dev Returns the addition of two unsigned integers, with an overflow flag.*/function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {unchecked {
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.0.0) (utils/math/SignedMath.sol)pragma solidity ^0.8.20;/*** @dev Standard signed math utilities missing in the Solidity language.*/library SignedMath {/*** @dev Returns the largest of two signed numbers.*/function max(int256 a, int256 b) internal pure returns (int256) {return a > b ? a : b;}/*** @dev Returns the smallest of two signed numbers.*/function min(int256 a, int256 b) internal pure returns (int256) {return a < b ? a : b;}/*** @dev Returns the average of two signed numbers without overflow.* The result is rounded towards zero.
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.0.0) (utils/Strings.sol)pragma solidity ^0.8.20;import {Math} from "./math/Math.sol";import {SignedMath} from "./math/SignedMath.sol";/*** @dev String operations.*/library Strings {bytes16 private constant HEX_DIGITS = "0123456789abcdef";uint8 private constant ADDRESS_LENGTH = 20;/*** @dev The `value` string doesn't fit in the specified `length`.*/error StringsInsufficientHexLength(uint256 value, uint256 length);/*** @dev Converts a `uint256` to its ASCII `string` decimal representation.*/function toString(uint256 value) internal pure returns (string memory) {unchecked {uint256 length = Math.log10(value) + 1;
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.8.4;/// @notice Simple single owner authorization mixin./// @author Solady (https://github.com/vectorized/solady/blob/main/src/auth/Ownable.sol)////// @dev Note:/// This implementation does NOT auto-initialize the owner to `msg.sender`./// You MUST call the `_initializeOwner` in the constructor / initializer.////// While the ownable portion follows/// [EIP-173](https://eips.ethereum.org/EIPS/eip-173) for compatibility,/// the nomenclature for the 2-step ownership handover may be unique to this codebase.abstract contract Ownable {/*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*//* CUSTOM ERRORS *//*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*//// @dev The caller is not authorized to call the function.error Unauthorized();/// @dev The `newOwner` cannot be the zero address.error NewOwnerIsZeroAddress();/*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*//* EVENTS */
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.8.4;/// @notice Deterministic deployments agnostic to the initialization code./// @author Solady (https://github.com/vectorized/solady/blob/main/src/utils/CREATE3.sol)/// @author Modified from Solmate (https://github.com/transmissions11/solmate/blob/main/src/utils/CREATE3.sol)/// @author Modified from 0xSequence (https://github.com/0xSequence/create3/blob/master/contracts/Create3.sol)library CREATE3 {/*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*//* CUSTOM ERRORS *//*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*//// @dev Unable to deploy the contract.error DeploymentFailed();/*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*//* BYTECODE CONSTANTS *//*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*//*** -------------------------------------------------------------------+* Opcode | Mnemonic | Stack | Memory |* -------------------------------------------------------------------|* 36 | CALLDATASIZE | cds | |* 3d | RETURNDATASIZE | 0 cds | |* 3d | RETURNDATASIZE | 0 0 cds | |
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.8.4;/// @notice Gas optimized ECDSA wrapper./// @author Solady (https://github.com/vectorized/solady/blob/main/src/utils/ECDSA.sol)/// @author Modified from Solmate (https://github.com/transmissions11/solmate/blob/main/src/utils/ECDSA.sol)/// @author Modified from OpenZeppelin (https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/cryptography/ECDSA.sol)////// @dev Note:/// - The recovery functions use the ecrecover precompile (0x1)./// - As of Solady version 0.0.68, the `recover` variants will revert upon recovery failure./// This is for more safety by default./// Use the `tryRecover` variants if you need to get the zero address back/// upon recovery failure instead./// - As of Solady version 0.0.134, all `bytes signature` variants accept both/// regular 65-byte `(r, s, v)` and EIP-2098 `(r, vs)` short form signatures./// See: https://eips.ethereum.org/EIPS/eip-2098/// This is for calldata efficiency on smart accounts prevalent on L2s.////// WARNING! Do NOT directly use signatures as unique identifiers:/// - The recovery operations do NOT check if a signature is non-malleable./// - Use a nonce in the digest to prevent replay attacks on the same contract./// - Use EIP-712 for the digest to prevent replay attacks across different chains and contracts./// EIP-712 also enables readable signing of typed data for better user safety./// - If you need a unique hash from a signature, please use the `canonicalHash` functions.library ECDSA {
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.8.4;/// @notice Minimal proxy library./// @author Solady (https://github.com/vectorized/solady/blob/main/src/utils/LibClone.sol)/// @author Minimal proxy by 0age (https://github.com/0age)/// @author Clones with immutable args by wighawag, zefram.eth, Saw-mon & Natalie/// (https://github.com/Saw-mon-and-Natalie/clones-with-immutable-args)/// @author Minimal ERC1967 proxy by jtriley-eth (https://github.com/jtriley-eth/minimum-viable-proxy)////// @dev Minimal proxy:/// Although the sw0nt pattern saves 5 gas over the ERC1167 pattern during runtime,/// it is not supported out-of-the-box on Etherscan. Hence, we choose to use the 0age pattern,/// which saves 4 gas over the ERC1167 pattern during runtime, and has the smallest bytecode./// - Automatically verified on Etherscan.////// @dev Minimal proxy (PUSH0 variant):/// This is a new minimal proxy that uses the PUSH0 opcode introduced during Shanghai./// It is optimized first for minimal runtime gas, then for minimal bytecode./// The PUSH0 clone functions are intentionally postfixed with a jarring "_PUSH0" as/// many EVM chains may not support the PUSH0 opcode in the early months after Shanghai./// Please use with caution./// - Automatically verified on Etherscan.////// @dev Clones with immutable args (CWIA):/// The implementation of CWIA here is does NOT append the immutable args into the calldata
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.8.4;/// @notice Library for converting numbers into strings and other string operations./// @author Solady (https://github.com/vectorized/solady/blob/main/src/utils/LibString.sol)/// @author Modified from Solmate (https://github.com/transmissions11/solmate/blob/main/src/utils/LibString.sol)////// @dev Note:/// For performance and bytecode compactness, most of the string operations are restricted to/// byte strings (7-bit ASCII), except where otherwise specified./// Usage of byte string operations on charsets with runes spanning two or more bytes/// can lead to undefined behavior.library LibString {/*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*//* CUSTOM ERRORS *//*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*//// @dev The length of the output is too small to contain all the hex digits.error HexLengthInsufficient();/// @dev The length of the string is more than 32 bytes.error TooBigForSmallString();/// @dev The input string must be a 7-bit ASCII.error StringNot7BitASCII();
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.8.4;/// @notice Safe ETH and ERC20 transfer library that gracefully handles missing return values./// @author Solady (https://github.com/vectorized/solady/blob/main/src/utils/SafeTransferLib.sol)/// @author Modified from Solmate (https://github.com/transmissions11/solmate/blob/main/src/utils/SafeTransferLib.sol)/// @author Permit2 operations from (https://github.com/Uniswap/permit2/blob/main/src/libraries/Permit2Lib.sol)////// @dev Note:/// - For ETH transfers, please use `forceSafeTransferETH` for DoS protection./// - For ERC20s, this implementation won't check that a token has code,/// responsibility is delegated to the caller.library SafeTransferLib {/*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*//* CUSTOM ERRORS *//*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*//// @dev The ETH transfer has failed.error ETHTransferFailed();/// @dev The ERC20 `transferFrom` has failed.error TransferFromFailed();/// @dev The ERC20 `transfer` has failed.error TransferFailed();
123456789101112131415161718192021{"evmVersion": "cancun","optimizer": {"enabled": true,"runs": 151},"viaIR": true,"outputSelection": {"*": {"*": ["evm.bytecode","evm.deployedBytecode","devdoc","userdoc","metadata","abi"]}},"libraries": {}}
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"delegatedCreationSigner","type":"address"},{"internalType":"bytes32","name":"type1","type":"bytes32"},{"internalType":"bytes32","name":"type2","type":"bytes32"},{"internalType":"address","name":"type1Address","type":"address"},{"internalType":"address","name":"type2Address","type":"address"}],"stateMutability":"payable","type":"constructor"},{"inputs":[],"name":"BalanceInvariant","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"owner","type":"address"}],"name":"ERC721IncorrectOwner","type":"error"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ERC721InsufficientApproval","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC721InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"ERC721InvalidOperator","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"ERC721InvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC721InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC721InvalidSender","type":"error"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ERC721NonexistentToken","type":"error"},{"inputs":[],"name":"FactoryBalanceDecreased","type":"error"},{"inputs":[],"name":"FailedToDeploy","type":"error"},{"inputs":[],"name":"InvalidLengths","type":"error"},{"inputs":[],"name":"InvalidSignature","type":"error"},{"inputs":[],"name":"NewOwnerIsZeroAddress","type":"error"},{"inputs":[],"name":"Unauthorized","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pendingOwner","type":"address"}],"name":"OwnershipHandoverCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pendingOwner","type":"address"}],"name":"OwnershipHandoverRequested","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"bytes","name":"initCode","type":"bytes"}],"name":"create3","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes","name":"collectionInformation","type":"bytes"},{"internalType":"bytes32","name":"collectionId","type":"bytes32"},{"internalType":"bytes32","name":"implementationType","type":"bytes32"}],"name":"createCollection","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes","name":"collectionInformation","type":"bytes"},{"internalType":"bytes32","name":"collectionId","type":"bytes32"},{"internalType":"bytes32","name":"implementationType","type":"bytes32"}],"name":"createCollectionN2M_000oEFvt","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes","name":"collectionInformation","type":"bytes"},{"internalType":"bytes32","name":"collectionId","type":"bytes32"},{"internalType":"bytes32","name":"implementationType","type":"bytes32"}],"name":"createCrossCollection","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"dynamicAddress","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"bytes","name":"initData","type":"bytes"}],"name":"createNewDynamic","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes","name":"collectionInformation","type":"bytes"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"bytes32","name":"collectionId","type":"bytes32"},{"internalType":"bytes32","name":"implementationType","type":"bytes32"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"delegatedCreation","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"CIDHash","type":"bytes32"}],"name":"getIPFSURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes32","name":"implementationType","type":"bytes32"}],"name":"getImplementation","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":[{"internalType":"uint256","name":"collectionAndSelfcalls","type":"uint256"},{"internalType":"bytes[]","name":"data","type":"bytes[]"}],"name":"multicall","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"collectionsAndCalls","type":"uint256[]"},{"internalType":"uint256[]","name":"collectionsValues","type":"uint256[]"},{"internalType":"bytes[]","name":"data","type":"bytes[]"}],"name":"multicallMulticollection","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"collectionAndSelfcalls","type":"uint256"},{"internalType":"bytes[]","name":"data","type":"bytes[]"}],"name":"multicallN2M_001Taw5z","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"n2mVersion","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes32[]","name":"implementationTypesAndAddresses","type":"bytes32[]"},{"internalType":"address","name":"delegatedCreationSigner_","type":"address"},{"internalType":"string","name":"ownerTokenURI","type":"string"}],"name":"newContractImplementationsAndSigner","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"result","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":[{"internalType":"bytes32","name":"implementationType","type":"bytes32"},{"internalType":"bytes32","name":"collectionId","type":"bytes32"}],"name":"predictDeterministicAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"salePrice","type":"uint256"}],"name":"royaltyInfo","outputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"royaltyAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"transferCollectionOwnership","outputs":[],"stateMutability":"payable","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":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"address","name":"erc20","type":"address"}],"name":"withdrawTo","outputs":[],"stateMutability":"payable","type":"function"}]
Contract Creation Code
608060405261252460c081380391826100178161041d565b9384928339810103126104195761002d81610442565b9061003a60208201610442565b90604081015160608201519261005e60a061005760808601610442565b9401610442565b94610069602061041d565b5f8152610076602061041d565b5f8152815190916001600160401b03821161034a5781906100975f54610456565b601f81116103cc575b50602090601f8311600114610369575f9261035e575b50508160011b915f199060031b1c1916175f555b8051906001600160401b03821161034a5781906100e8600154610456565b601f81116102f1575b50602090601f831160011461028b575f92610280575b50508160011b915f199060031b1c1916176001555b610127600854610456565b601f8111610237575b50605f60089081555f9081527f68747470733a2f2f6d657461646174612e6e667473326d652e636f6d2f6170695f5160206125045f395f51905f52556e2f6f776e6572546f6b656e5552492f60881b7ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee4556001600160a01b0391909116638b78c6d819819055907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a3600780546001600160a01b03199081166001600160a01b03938416179091555f92835260066020526040808420805483169584169590951790945593825290829020805490931693169290921790555161205f90816104a58239f35b60085f5261027a90601f0160051c5f5160206125045f395f51905f52017ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee561048e565b5f610130565b015190505f80610107565b60015f9081528281209350601f198516905b8181106102d957509084600195949392106102c1575b505050811b0160015561011c565b01515f1960f88460031b161c191690555f80806102b3565b9293602060018192878601518155019501930161029d565b60015f5261033a907fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6601f850160051c81019160208610610340575b601f0160051c019061048e565b5f6100f1565b909150819061032d565b634e487b7160e01b5f52604160045260245ffd5b015190505f806100b6565b5f8080528281209350601f198516905b8181106103b4575090846001959493921061039c575b505050811b015f556100ca565b01515f1960f88460031b161c191690555f808061038f565b92936020600181928786015181550195019301610379565b5f8052610413907f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563601f850160051c8101916020861061034057601f0160051c019061048e565b5f6100a0565b5f80fd5b6040519190601f01601f191682016001600160401b0381118382101761034a57604052565b51906001600160a01b038216820361041957565b90600182811c92168015610484575b602083101461047057565b634e487b7160e01b5f52602260045260245ffd5b91607f1691610465565b818110610499575050565b5f815560010161048e56fe60806040526004361015610011575f80fd5b5f3560e01c80156101b757806001146101c657806301ffc9a71461020257806303f30d08146101fd57806304dad935146101f857806306fdde03146101f3578063081812fc146101ee578063095ea7b3146101e957806323b872dd146101e45780632a55205a146101df5780632af25238146101da57806338395f19146101d55780633c2e0828146101d057806342842e0e146101cb5780635ae401dc146101c65780636352211e146101c157806367c0e310146101bc5780636a064fce146101b75780636d07dbf8146101b25780636dce4ab0146101ad57806370a08231146101a85780637ce27a27146101a35780638da5cb5b1461019e57806395905e211461019957806395d89b4114610194578063a22cb4651461018f578063b88d4fde1461018a578063c87b56dd14610185578063c91df5cc14610180578063cb93c48f1461017b578063e985e9c5146101765763f2fde38b14610171575f80fd5b6112cc565b6112a0565b611284565b611200565b61110b565b6110bd565b611005565b610fb0565b610ec1565b610e95565b610d1d565b610ccc565b610c0b565b610b78565b61026e565b610afc565b610acc565b6102bf565b610aa3565b610a71565b6109b6565b610975565b610884565b61086d565b610759565b61071d565b6106c9565b610644565b61041d565b6103ec565b9181601f84011215610234578235916001600160401b038311610234576020838186019501011161023457565b5f80fd5b606060031982011261023457600435906001600160401b0382116102345761026291600401610207565b90916024359060443590565b61028d61027a36610238565b926102889291923384611978565b611377565b005b9181601f84011215610234578235916001600160401b038311610234576020808501948460051b01011161023457565b6040366003190112610234576004356024356001600160401b038111610234576102ed90369060040161028f565b5f926001600160a01b0381169060a01c5b80851061039f57508061030d57005b61033e610332610325835f52600260205260405f2090565b546001600160a01b031690565b6001600160a01b031690565b330361039157925b81811061034f57005b5f8061035c8385876113e6565b9061036c6040518093819361133b565b039082885af161037a611348565b90156103895750600101610346565b602081519101fd5b6282b42960e81b5f5260045ffd5b935f806103ad8386886113e6565b906103bd6040518093819361133b565b0390305af46103ca611348565b90156103895750600101936102fe565b6001600160e01b031981160361023457565b3461023457602036600319011261023457602061041360043561040e816103da565b61142c565b6040519015158152f35b6060366003190112610234576004356001600160401b0381116102345761044890369060040161028f565b6024356001600160401b0381116102345761046790369060040161028f565b92906044356001600160401b0381116102345761048890369060040161028f565b9290856105df575b5f925f955f5b8181106104bd575050505050036104ae57036104ae57005b631df89e8b60e01b5f5260045ffd5b6104c88183876114a1565b356001600160a01b0381169060a01c908061053557505f5b8181106104f35750506001905b01610496565b5f806105096105018b6114b1565b9a8c8a6113e6565b906105196040518093819361133b565b0390305af4610526611348565b901561038957506001016104e0565b61054d610332610325835f52600260205260405f2090565b3303610391579088915f5b82811061056b57505050506001906104ed565b909192985f908d8d106105c1575b5f916105918261058a8594916114b1565b9d8c6113e6565b906105a16040518093819361133b565b0391865af16105ae611348565b9015610389575060010190899291610558565b90508c6105cd8d6114b1565b9c6105d891896114a1565b3590610579565b6105e93447611494565b806105f5575b50610490565b5f80808093736db16927dbc38aa39f0ee2cb545e15efd813fb995af1505f6105ef565b600435906001600160a01b038216820361023457565b602435906001600160a01b038216820361023457565b602036600319011261023457610658610618565b6001600160a01b039061066c9033906119db565b161561067457005b637e27328960e01b5f523360045260245ffd5b5f91031261023457565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b9060206106c6928181520190610691565b90565b34610234575f366003190112610234576107196040516106ea6040826108ee565b600e81526d4e465473324d65204f776e65727360901b6020820152604051918291602083526020830190610691565b0390f35b346102345760203660031901126102345760043561073a81611b11565b505f526004602052602060018060a01b0360405f205416604051908152f35b3461023457604036600319011261023457610772610618565b6024359061077f82611b11565b33151580610820575b8061080f575b6107fa5761028d926107db9181906001600160a01b0385811691167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9255f80a45f52600460205260405f2090565b80546001600160a01b0319166001600160a01b03909216919091179055565b63a9fbf51f60e01b5f90815233600452602490fd5b5061081a33826118fc565b1561078e565b506001600160a01b038116331415610788565b6060906003190112610234576004356001600160a01b038116810361023457906024356001600160a01b0381168103610234579060443590565b346102345761028d61087e36610833565b916114bf565b34610234576040366003190112610234576024356101f48102908082046101f414901517156108d557604090612710825191736db16927dbc38aa39f0ee2cb545e15efd813fb998352046020820152f35b611480565b634e487b7160e01b5f52604160045260245ffd5b90601f801991011681019081106001600160401b0382111761090f57604052565b6108da565b6001600160401b03811161090f57601f01601f191660200190565b81601f820112156102345780359061094682610914565b9261095460405194856108ee565b8284526020838301011161023457815f926020809301838601378301015290565b6040366003190112610234576024356004356001600160401b038211610234576109a661028d92369060040161092f565b6109b03383611978565b34611b9e565b610a305f806109c436610238565b6109d2969293963383611978565b8452600660205260408085205481516c5af43d3d93803e602a57fd5bf360581b818401526001600160a01b03909116602882015273602c3d8160093d39f33d3d3d3d363d3d37363d7360148201526035815260608101909152611b45565b93610a406040518093819361133b565b039082855af190610a4f611348565b9115610a685761028d906001600160a01b03163361199e565b50602081519101fd5b34610234576020366003190112610234576004355f526006602052602060018060a01b0360405f205416604051908152f35b346102345761028d610ab436610833565b9060405192610ac46020856108ee565b5f84526116b7565b34610234576020366003190112610234576020610aea600435611b11565b6040516001600160a01b039091168152f35b606036600319011261023457610b10610618565b602435906044356001600160401b03811161023457610b36610b48913690600401610207565b939092610b433383611978565b611f13565b82610b4f57005b825f9392849360405192839283378101848152039134905af1610b70611348565b901561038957005b3461023457604036600319011261023457600435602435905f52600660205260018060a01b0360405f2054166c5af43d3d93803e602a57fd5bf360215260145273602c3d8160093d39f33d3d3d3d363d3d37363d735f526035600c205f60215260ff5f5360359081523060601b60015260159190915260555f90812091526040516001600160a01b039091168152602090f35b604036600319011261023457610c1f610618565b610c2761062e565b610c2f611be9565b5f80808047865af1506001600160a01b0381169182610c4a57005b610c8f92610c5b6020933090611c05565b60405163a9059cbb60e01b81526001600160a01b0390931660048401526024830152909283919082905f9082906044820190565b03925af18015610cc757610c9f57005b61028d9060203d602011610cc0575b610cb881836108ee565b810190611651565b503d610cae565b611666565b34610234576020366003190112610234576001600160a01b03610ced610618565b168015610d0a575f526003602052602060405f2054604051908152f35b6322718ad960e21b5f525f60045260245ffd5b60a0366003190112610234576004356001600160401b03811161023457610d48903690600401610207565b610d5061062e565b90604435606435916084356001600160401b03811161023457610d7a610de5913690600401610207565b90610d858786611978565b610de08886610db38a610da58b6040519485938c6020860198468a611671565b03601f1981018352826108ee565b5190206020527b19457468657265756d205369676e6564204d6573736167653a0a33325f52603c60042090565b611c2a565b600754610dfa906001600160a01b0316610332565b6001600160a01b03909116908114159081610e81575b50610e7257610e315f9392610b4361032586955f52600660205260405f2090565b94610e416040518093819361133b565b039082865af191610e50611348565b9215610e6a5761028d92506001600160a01b03169061199e565b825160208401fd5b638baa579f60e01b5f5260045ffd5b6001600160a01b038616141590505f610e10565b34610234575f36600319011261023457638b78c6d819546040516001600160a01b039091168152602090f35b6060366003190112610234576004356001600160401b03811161023457610eec90369060040161028f565b610ef461062e565b6044356001600160401b03811161023457610f13903690600401610207565b929093610f1e611be9565b5f5b828110610f6f575050506001600160a01b038116610f4a575b5080610f4157005b61028d91611d04565b600780546001600160a01b0319166001600160a01b039092169190911790555f610f39565b80610faa610f8060019386866114a1565b356107db610f8f8488886114a1565b3591858060a01b03169160a01c5f52600660205260405f2090565b01610f20565b34610234575f36600319011261023457610719604051610fd16040826108ee565b60098152684e324d4f776e65727360b81b6020820152604051918291602083526020830190610691565b8015150361023457565b346102345760403660031901126102345761101e610618565b60243561102a81610ffb565b6001600160a01b0382169182156110aa57335f9081526005602090815260408083206001600160a01b0390941683529290522060ff1981541660ff831515161790557f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31604051806110a5339482919091602081019215159052565b0390a3005b82630b61174360e31b5f5260045260245ffd5b34610234576080366003190112610234576110d6610618565b6110de61062e565b90604435606435926001600160401b0384116102345761110561028d94369060040161092f565b926116b7565b34610234576020366003190112610234576004356040516329ffa82360e11b81526020816004816001600160a01b0386165afa908115610cc7576020610da56111ba610719956111b46111ba6111b4976111c7975f916111d3575b506111b46111ba61117646611e2b565b956111b46111ba6111a66111a061119b61033261033261119588611e2b565b97611b11565b611e2b565b96611e2b565b986040519e8f9d8e016117f9565b90611880565b602f60f81b815260010190565b604051918291826106b5565b6111f39150873d89116111f9575b6111eb81836108ee565b8101906117b2565b5f611166565b503d6111e1565b3461023457602036600319011261023457604051620b809160e51b602082015260043560248201525f60448201526025815261123d6045826108ee565b611245611892565b905f5b603a811061125c576107196111c7846118c5565b8061127161126c60019385611e70565b611ed1565b5f1a61127d82866118b4565b5301611248565b34610234575f3660031901126102345760206040516107ee8152f35b346102345760403660031901126102345760206104136112be610618565b6112c661062e565b906118fc565b6020366003190112610234576112e0610618565b6112e8611be9565b8060601b1561132e5760018060a01b031680638b78c6d819547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3638b78c6d81955005b637448fbae5f526004601cfd5b908092918237015f815290565b3d15611372573d9061135982610914565b9161136760405193846108ee565b82523d5f602084013e565b606090565b92906113995f9384938452600660205260018060a01b03604085205416611f13565b938160405192839283378101838152039082855af16113b6611348565b901561038957506113d0906001600160a01b03163361199e565b565b634e487b7160e01b5f52603260045260245ffd5b91908110156114275760051b81013590601e19813603018212156102345701908135916001600160401b038311610234576020018236038113610234579190565b6113d2565b6001600160e01b0319166301ffc9a760e01b811461147a576307f5828d60e41b811461147a576380ac58cd60e01b811461147a57635b5e139f60e01b811461147a5763152a902d60e11b1490565b50600190565b634e487b7160e01b5f52601160045260245ffd5b919082039182116108d557565b91908110156114275760051b0190565b5f1981146108d55760010190565b9091906001600160a01b038316801561163e575f838152600260205260409020546001600160a01b0316933361162e575b6001600160a01b0385169485151580611602575b6001600160a01b0383165f90815260036020526040902060018154019055611538836107db885f52600260205260405f2090565b8560405194887fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80a4611597575b5050506001600160a01b031680830361157f57505050565b6364283d7b60e01b5f5260045260245260445260645ffd5b6001600160a01b038516803b1561023457637699c77f60e01b84526001600160a01b039182166004850152911660248301525f908290604490829084905af18015610cc7576115e8575b8080611567565b806115f65f6115fc936108ee565b80610687565b5f6115e1565b61160b86611f51565b6001600160a01b0382165f90815260036020526040902080545f19019055611504565b611639843387611f73565b6114f0565b633250574960e11b5f525f60045260245ffd5b9081602091031261023457516106c681610ffb565b6040513d5f823e3d90fd5b90928092607897959694637ce27a2760e01b84526004840152602483013701926bffffffffffffffffffffffff199060601b166024840152603883015260588201520190565b9092916116c58185846114bf565b833b6116d2575b50505050565b6020916116f46040519485938493630a85bd0160e11b85523360048601611dfa565b03815f6001600160a01b0387165af15f9181611781575b506117455750611719611348565b805191908261173e57633250574960e11b5f526001600160a01b03821660045260245ffd5b9050602001fd5b6001600160e01b03191663757a42ff60e11b0161176657505f8080806116cc565b633250574960e11b5f526001600160a01b031660045260245ffd5b6117a491925060203d6020116117ab575b61179c81836108ee565b810190611de5565b905f61170b565b503d611792565b90816020910312610234575190565b90600182811c921680156117ef575b60208310146117db57565b634e487b7160e01b5f52602260045260245ffd5b91607f16916117d0565b6008545f9291611808826117c1565b916001811690811561186e5750600114611820575050565b60085f90815292935090917ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee35b83821061185a5750500190565b60018160209254848601520191019061184d565b60ff1916825250811515909102019150565b805191908290602001825e015f815290565b604051606091906118a383826108ee565b603a815291601f1901366020840137565b908151811015611427570160200190565b906113d06118ee926040519384916734b833399d1797b160c11b60208401526028830190611880565b03601f1981018452836108ee565b6001600160a01b0382167388899dc0b84c6e726840e00dfb94abc6248825ec811461197057731e0049783f008a0085193e00003d00cd54003c7114611969576001600160a01b039081165f908152600560209081526040808320939094168252919091522060ff90541690565b5050600190565b505050600190565b60601c80156001600160a01b0390921614171561199157565b630c4549ef5f526004601cfd5b906001600160a01b0382161561163e576001600160a01b03916119c191906119db565b166119c857565b6339e3563760e11b5f525f60045260245ffd5b5f828152600260205260409020546001600160a01b03168015159392909190829085611ae5575b806001600160a01b03841680611ac2575b611a29856107db845f52600260205260405f2090565b604051957fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80a48195611a5d5750505050565b6001600160a01b0316803b1561023457637699c77f60e01b84526001600160a01b039182166004850152911660248301525f908290604490829084905af18015610cc757611aae575b8080806116cc565b806115f65f611abc936108ee565b5f611aa6565b6001600160a01b0385165f90815260036020526040902060018154019055611a13565b611aee81611f51565b6001600160a01b0382165f90815260036020526040902080545f19019055611a02565b5f818152600260205260409020546001600160a01b0316908115611b33575090565b637e27328960e01b5f5260045260245ffd5b91906f67363d3d37363d34f03d5260086018f35f526010805ff5918215611b91575f80918460145261d694825260016034536017601e209482602083519301915af1823b0215611b9157565b63301164255f526004601cfd5b92916f67363d3d37363d34f03d5260086018f35f526010805ff58015611b91575f9181839260145261d694835260016034536017601e2095602083519301915af1823b0215611b9157565b638b78c6d819543303611bf857565b6382b429005f526004601cfd5b602460106020939284936014526370a0823160601b5f525afa601f3d11166020510290565b929190600191604051945f5260408114611c8a57604114611c705750506020600160805f805b5afa51913d15611c63575f606052604052565b638baa579f5f526004601cfd5b60805f602093604084816001960135841a87528137611c50565b5060805f6020938385600195013590601b8260ff1c01875235604052848060ff1b0316606052611c50565b601f8211611cc257505050565b5f5260205f20906020601f840160051c83019310611cfa575b601f0160051c01905b818110611cef575050565b5f8155600101611ce4565b9091508190611cdb565b91906001600160401b03811161090f57611d2a81611d236008546117c1565b6008611cb5565b5f601f8211600114611d68578190611d5893945f92611d5d575b50508160011b915f199060031b1c19161790565b600855565b013590505f80611d44565b60085f52601f198216937ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee3915f5b868110611dcd5750836001959610611db4575b505050811b01600855565b01355f19600384901b60f8161c191690555f8080611da9565b90926020600181928686013581550194019101611d96565b9081602091031261023457516106c6816103da565b6001600160a01b0391821681529116602082015260408101919091526080606082018190526106c692910190610691565b90604051600a608082019360a083016040525f8552935b5f190193603082820601855304928315611e5e57600a90611e42565b809350608091030191601f1901918252565b906005810290808204600514901517156108d557600381901c906001600160f81b0319611e9d83856118b4565b511691600181018091116108d557611eb960079160ff956118b4565b5160081c60f085901b169290921791161b60fb1c1690565b60ff16601a811015611ef85760610160ff81116108d55760f81b6001600160f81b03191690565b60180160ff81116108d55760f81b6001600160f81b03191690565b6c5af43d3d93803e602a57fd5bf360215260145273602c3d8160093d39f33d3d3d3d363d3d37363d735f526035600c5ff5908115611b91575f602152565b611f63905f52600460205260405f2090565b80546001600160a01b0319169055565b909190611f916001600160a01b0384168015159081611fd957501590565b611f9a57505050565b6001600160a01b0316611fb957637e27328960e01b5f5260045260245ffd5b63177e802f60e01b5f526001600160a01b0390911660045260245260445ffd5b6001600160a01b038416811491508115612017575b8115611ff957501590565b5f858152600460205260409020546001600160a01b03161415919050565b905061202385846118fc565b90611fee56fea264697066735822122036339cc180f6c07b8d3c0eab3d70a06b025d42bf8cc92d3f263a89967c1afc8b64736f6c634300081b0033f3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee3000000000000000000000000c5557771673109cab9d05358e1d280fab522597700000000000000000000000000000000156d54b85de04c897356026a5ff2cbc9000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000a492d5b29b3191f028d5a9a848911a0000000000000000000000000000000000bf54a35f528d67c62145161b25c55c
Deployed Bytecode
0x60806040526004361015610011575f80fd5b5f3560e01c80156101b757806001146101c657806301ffc9a71461020257806303f30d08146101fd57806304dad935146101f857806306fdde03146101f3578063081812fc146101ee578063095ea7b3146101e957806323b872dd146101e45780632a55205a146101df5780632af25238146101da57806338395f19146101d55780633c2e0828146101d057806342842e0e146101cb5780635ae401dc146101c65780636352211e146101c157806367c0e310146101bc5780636a064fce146101b75780636d07dbf8146101b25780636dce4ab0146101ad57806370a08231146101a85780637ce27a27146101a35780638da5cb5b1461019e57806395905e211461019957806395d89b4114610194578063a22cb4651461018f578063b88d4fde1461018a578063c87b56dd14610185578063c91df5cc14610180578063cb93c48f1461017b578063e985e9c5146101765763f2fde38b14610171575f80fd5b6112cc565b6112a0565b611284565b611200565b61110b565b6110bd565b611005565b610fb0565b610ec1565b610e95565b610d1d565b610ccc565b610c0b565b610b78565b61026e565b610afc565b610acc565b6102bf565b610aa3565b610a71565b6109b6565b610975565b610884565b61086d565b610759565b61071d565b6106c9565b610644565b61041d565b6103ec565b9181601f84011215610234578235916001600160401b038311610234576020838186019501011161023457565b5f80fd5b606060031982011261023457600435906001600160401b0382116102345761026291600401610207565b90916024359060443590565b61028d61027a36610238565b926102889291923384611978565b611377565b005b9181601f84011215610234578235916001600160401b038311610234576020808501948460051b01011161023457565b6040366003190112610234576004356024356001600160401b038111610234576102ed90369060040161028f565b5f926001600160a01b0381169060a01c5b80851061039f57508061030d57005b61033e610332610325835f52600260205260405f2090565b546001600160a01b031690565b6001600160a01b031690565b330361039157925b81811061034f57005b5f8061035c8385876113e6565b9061036c6040518093819361133b565b039082885af161037a611348565b90156103895750600101610346565b602081519101fd5b6282b42960e81b5f5260045ffd5b935f806103ad8386886113e6565b906103bd6040518093819361133b565b0390305af46103ca611348565b90156103895750600101936102fe565b6001600160e01b031981160361023457565b3461023457602036600319011261023457602061041360043561040e816103da565b61142c565b6040519015158152f35b6060366003190112610234576004356001600160401b0381116102345761044890369060040161028f565b6024356001600160401b0381116102345761046790369060040161028f565b92906044356001600160401b0381116102345761048890369060040161028f565b9290856105df575b5f925f955f5b8181106104bd575050505050036104ae57036104ae57005b631df89e8b60e01b5f5260045ffd5b6104c88183876114a1565b356001600160a01b0381169060a01c908061053557505f5b8181106104f35750506001905b01610496565b5f806105096105018b6114b1565b9a8c8a6113e6565b906105196040518093819361133b565b0390305af4610526611348565b901561038957506001016104e0565b61054d610332610325835f52600260205260405f2090565b3303610391579088915f5b82811061056b57505050506001906104ed565b909192985f908d8d106105c1575b5f916105918261058a8594916114b1565b9d8c6113e6565b906105a16040518093819361133b565b0391865af16105ae611348565b9015610389575060010190899291610558565b90508c6105cd8d6114b1565b9c6105d891896114a1565b3590610579565b6105e93447611494565b806105f5575b50610490565b5f80808093736db16927dbc38aa39f0ee2cb545e15efd813fb995af1505f6105ef565b600435906001600160a01b038216820361023457565b602435906001600160a01b038216820361023457565b602036600319011261023457610658610618565b6001600160a01b039061066c9033906119db565b161561067457005b637e27328960e01b5f523360045260245ffd5b5f91031261023457565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b9060206106c6928181520190610691565b90565b34610234575f366003190112610234576107196040516106ea6040826108ee565b600e81526d4e465473324d65204f776e65727360901b6020820152604051918291602083526020830190610691565b0390f35b346102345760203660031901126102345760043561073a81611b11565b505f526004602052602060018060a01b0360405f205416604051908152f35b3461023457604036600319011261023457610772610618565b6024359061077f82611b11565b33151580610820575b8061080f575b6107fa5761028d926107db9181906001600160a01b0385811691167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9255f80a45f52600460205260405f2090565b80546001600160a01b0319166001600160a01b03909216919091179055565b63a9fbf51f60e01b5f90815233600452602490fd5b5061081a33826118fc565b1561078e565b506001600160a01b038116331415610788565b6060906003190112610234576004356001600160a01b038116810361023457906024356001600160a01b0381168103610234579060443590565b346102345761028d61087e36610833565b916114bf565b34610234576040366003190112610234576024356101f48102908082046101f414901517156108d557604090612710825191736db16927dbc38aa39f0ee2cb545e15efd813fb998352046020820152f35b611480565b634e487b7160e01b5f52604160045260245ffd5b90601f801991011681019081106001600160401b0382111761090f57604052565b6108da565b6001600160401b03811161090f57601f01601f191660200190565b81601f820112156102345780359061094682610914565b9261095460405194856108ee565b8284526020838301011161023457815f926020809301838601378301015290565b6040366003190112610234576024356004356001600160401b038211610234576109a661028d92369060040161092f565b6109b03383611978565b34611b9e565b610a305f806109c436610238565b6109d2969293963383611978565b8452600660205260408085205481516c5af43d3d93803e602a57fd5bf360581b818401526001600160a01b03909116602882015273602c3d8160093d39f33d3d3d3d363d3d37363d7360148201526035815260608101909152611b45565b93610a406040518093819361133b565b039082855af190610a4f611348565b9115610a685761028d906001600160a01b03163361199e565b50602081519101fd5b34610234576020366003190112610234576004355f526006602052602060018060a01b0360405f205416604051908152f35b346102345761028d610ab436610833565b9060405192610ac46020856108ee565b5f84526116b7565b34610234576020366003190112610234576020610aea600435611b11565b6040516001600160a01b039091168152f35b606036600319011261023457610b10610618565b602435906044356001600160401b03811161023457610b36610b48913690600401610207565b939092610b433383611978565b611f13565b82610b4f57005b825f9392849360405192839283378101848152039134905af1610b70611348565b901561038957005b3461023457604036600319011261023457600435602435905f52600660205260018060a01b0360405f2054166c5af43d3d93803e602a57fd5bf360215260145273602c3d8160093d39f33d3d3d3d363d3d37363d735f526035600c205f60215260ff5f5360359081523060601b60015260159190915260555f90812091526040516001600160a01b039091168152602090f35b604036600319011261023457610c1f610618565b610c2761062e565b610c2f611be9565b5f80808047865af1506001600160a01b0381169182610c4a57005b610c8f92610c5b6020933090611c05565b60405163a9059cbb60e01b81526001600160a01b0390931660048401526024830152909283919082905f9082906044820190565b03925af18015610cc757610c9f57005b61028d9060203d602011610cc0575b610cb881836108ee565b810190611651565b503d610cae565b611666565b34610234576020366003190112610234576001600160a01b03610ced610618565b168015610d0a575f526003602052602060405f2054604051908152f35b6322718ad960e21b5f525f60045260245ffd5b60a0366003190112610234576004356001600160401b03811161023457610d48903690600401610207565b610d5061062e565b90604435606435916084356001600160401b03811161023457610d7a610de5913690600401610207565b90610d858786611978565b610de08886610db38a610da58b6040519485938c6020860198468a611671565b03601f1981018352826108ee565b5190206020527b19457468657265756d205369676e6564204d6573736167653a0a33325f52603c60042090565b611c2a565b600754610dfa906001600160a01b0316610332565b6001600160a01b03909116908114159081610e81575b50610e7257610e315f9392610b4361032586955f52600660205260405f2090565b94610e416040518093819361133b565b039082865af191610e50611348565b9215610e6a5761028d92506001600160a01b03169061199e565b825160208401fd5b638baa579f60e01b5f5260045ffd5b6001600160a01b038616141590505f610e10565b34610234575f36600319011261023457638b78c6d819546040516001600160a01b039091168152602090f35b6060366003190112610234576004356001600160401b03811161023457610eec90369060040161028f565b610ef461062e565b6044356001600160401b03811161023457610f13903690600401610207565b929093610f1e611be9565b5f5b828110610f6f575050506001600160a01b038116610f4a575b5080610f4157005b61028d91611d04565b600780546001600160a01b0319166001600160a01b039092169190911790555f610f39565b80610faa610f8060019386866114a1565b356107db610f8f8488886114a1565b3591858060a01b03169160a01c5f52600660205260405f2090565b01610f20565b34610234575f36600319011261023457610719604051610fd16040826108ee565b60098152684e324d4f776e65727360b81b6020820152604051918291602083526020830190610691565b8015150361023457565b346102345760403660031901126102345761101e610618565b60243561102a81610ffb565b6001600160a01b0382169182156110aa57335f9081526005602090815260408083206001600160a01b0390941683529290522060ff1981541660ff831515161790557f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31604051806110a5339482919091602081019215159052565b0390a3005b82630b61174360e31b5f5260045260245ffd5b34610234576080366003190112610234576110d6610618565b6110de61062e565b90604435606435926001600160401b0384116102345761110561028d94369060040161092f565b926116b7565b34610234576020366003190112610234576004356040516329ffa82360e11b81526020816004816001600160a01b0386165afa908115610cc7576020610da56111ba610719956111b46111ba6111b4976111c7975f916111d3575b506111b46111ba61117646611e2b565b956111b46111ba6111a66111a061119b61033261033261119588611e2b565b97611b11565b611e2b565b96611e2b565b986040519e8f9d8e016117f9565b90611880565b602f60f81b815260010190565b604051918291826106b5565b6111f39150873d89116111f9575b6111eb81836108ee565b8101906117b2565b5f611166565b503d6111e1565b3461023457602036600319011261023457604051620b809160e51b602082015260043560248201525f60448201526025815261123d6045826108ee565b611245611892565b905f5b603a811061125c576107196111c7846118c5565b8061127161126c60019385611e70565b611ed1565b5f1a61127d82866118b4565b5301611248565b34610234575f3660031901126102345760206040516107ee8152f35b346102345760403660031901126102345760206104136112be610618565b6112c661062e565b906118fc565b6020366003190112610234576112e0610618565b6112e8611be9565b8060601b1561132e5760018060a01b031680638b78c6d819547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3638b78c6d81955005b637448fbae5f526004601cfd5b908092918237015f815290565b3d15611372573d9061135982610914565b9161136760405193846108ee565b82523d5f602084013e565b606090565b92906113995f9384938452600660205260018060a01b03604085205416611f13565b938160405192839283378101838152039082855af16113b6611348565b901561038957506113d0906001600160a01b03163361199e565b565b634e487b7160e01b5f52603260045260245ffd5b91908110156114275760051b81013590601e19813603018212156102345701908135916001600160401b038311610234576020018236038113610234579190565b6113d2565b6001600160e01b0319166301ffc9a760e01b811461147a576307f5828d60e41b811461147a576380ac58cd60e01b811461147a57635b5e139f60e01b811461147a5763152a902d60e11b1490565b50600190565b634e487b7160e01b5f52601160045260245ffd5b919082039182116108d557565b91908110156114275760051b0190565b5f1981146108d55760010190565b9091906001600160a01b038316801561163e575f838152600260205260409020546001600160a01b0316933361162e575b6001600160a01b0385169485151580611602575b6001600160a01b0383165f90815260036020526040902060018154019055611538836107db885f52600260205260405f2090565b8560405194887fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80a4611597575b5050506001600160a01b031680830361157f57505050565b6364283d7b60e01b5f5260045260245260445260645ffd5b6001600160a01b038516803b1561023457637699c77f60e01b84526001600160a01b039182166004850152911660248301525f908290604490829084905af18015610cc7576115e8575b8080611567565b806115f65f6115fc936108ee565b80610687565b5f6115e1565b61160b86611f51565b6001600160a01b0382165f90815260036020526040902080545f19019055611504565b611639843387611f73565b6114f0565b633250574960e11b5f525f60045260245ffd5b9081602091031261023457516106c681610ffb565b6040513d5f823e3d90fd5b90928092607897959694637ce27a2760e01b84526004840152602483013701926bffffffffffffffffffffffff199060601b166024840152603883015260588201520190565b9092916116c58185846114bf565b833b6116d2575b50505050565b6020916116f46040519485938493630a85bd0160e11b85523360048601611dfa565b03815f6001600160a01b0387165af15f9181611781575b506117455750611719611348565b805191908261173e57633250574960e11b5f526001600160a01b03821660045260245ffd5b9050602001fd5b6001600160e01b03191663757a42ff60e11b0161176657505f8080806116cc565b633250574960e11b5f526001600160a01b031660045260245ffd5b6117a491925060203d6020116117ab575b61179c81836108ee565b810190611de5565b905f61170b565b503d611792565b90816020910312610234575190565b90600182811c921680156117ef575b60208310146117db57565b634e487b7160e01b5f52602260045260245ffd5b91607f16916117d0565b6008545f9291611808826117c1565b916001811690811561186e5750600114611820575050565b60085f90815292935090917ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee35b83821061185a5750500190565b60018160209254848601520191019061184d565b60ff1916825250811515909102019150565b805191908290602001825e015f815290565b604051606091906118a383826108ee565b603a815291601f1901366020840137565b908151811015611427570160200190565b906113d06118ee926040519384916734b833399d1797b160c11b60208401526028830190611880565b03601f1981018452836108ee565b6001600160a01b0382167388899dc0b84c6e726840e00dfb94abc6248825ec811461197057731e0049783f008a0085193e00003d00cd54003c7114611969576001600160a01b039081165f908152600560209081526040808320939094168252919091522060ff90541690565b5050600190565b505050600190565b60601c80156001600160a01b0390921614171561199157565b630c4549ef5f526004601cfd5b906001600160a01b0382161561163e576001600160a01b03916119c191906119db565b166119c857565b6339e3563760e11b5f525f60045260245ffd5b5f828152600260205260409020546001600160a01b03168015159392909190829085611ae5575b806001600160a01b03841680611ac2575b611a29856107db845f52600260205260405f2090565b604051957fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80a48195611a5d5750505050565b6001600160a01b0316803b1561023457637699c77f60e01b84526001600160a01b039182166004850152911660248301525f908290604490829084905af18015610cc757611aae575b8080806116cc565b806115f65f611abc936108ee565b5f611aa6565b6001600160a01b0385165f90815260036020526040902060018154019055611a13565b611aee81611f51565b6001600160a01b0382165f90815260036020526040902080545f19019055611a02565b5f818152600260205260409020546001600160a01b0316908115611b33575090565b637e27328960e01b5f5260045260245ffd5b91906f67363d3d37363d34f03d5260086018f35f526010805ff5918215611b91575f80918460145261d694825260016034536017601e209482602083519301915af1823b0215611b9157565b63301164255f526004601cfd5b92916f67363d3d37363d34f03d5260086018f35f526010805ff58015611b91575f9181839260145261d694835260016034536017601e2095602083519301915af1823b0215611b9157565b638b78c6d819543303611bf857565b6382b429005f526004601cfd5b602460106020939284936014526370a0823160601b5f525afa601f3d11166020510290565b929190600191604051945f5260408114611c8a57604114611c705750506020600160805f805b5afa51913d15611c63575f606052604052565b638baa579f5f526004601cfd5b60805f602093604084816001960135841a87528137611c50565b5060805f6020938385600195013590601b8260ff1c01875235604052848060ff1b0316606052611c50565b601f8211611cc257505050565b5f5260205f20906020601f840160051c83019310611cfa575b601f0160051c01905b818110611cef575050565b5f8155600101611ce4565b9091508190611cdb565b91906001600160401b03811161090f57611d2a81611d236008546117c1565b6008611cb5565b5f601f8211600114611d68578190611d5893945f92611d5d575b50508160011b915f199060031b1c19161790565b600855565b013590505f80611d44565b60085f52601f198216937ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee3915f5b868110611dcd5750836001959610611db4575b505050811b01600855565b01355f19600384901b60f8161c191690555f8080611da9565b90926020600181928686013581550194019101611d96565b9081602091031261023457516106c6816103da565b6001600160a01b0391821681529116602082015260408101919091526080606082018190526106c692910190610691565b90604051600a608082019360a083016040525f8552935b5f190193603082820601855304928315611e5e57600a90611e42565b809350608091030191601f1901918252565b906005810290808204600514901517156108d557600381901c906001600160f81b0319611e9d83856118b4565b511691600181018091116108d557611eb960079160ff956118b4565b5160081c60f085901b169290921791161b60fb1c1690565b60ff16601a811015611ef85760610160ff81116108d55760f81b6001600160f81b03191690565b60180160ff81116108d55760f81b6001600160f81b03191690565b6c5af43d3d93803e602a57fd5bf360215260145273602c3d8160093d39f33d3d3d3d363d3d37363d735f526035600c5ff5908115611b91575f602152565b611f63905f52600460205260405f2090565b80546001600160a01b0319169055565b909190611f916001600160a01b0384168015159081611fd957501590565b611f9a57505050565b6001600160a01b0316611fb957637e27328960e01b5f5260045260245ffd5b63177e802f60e01b5f526001600160a01b0390911660045260245260445ffd5b6001600160a01b038416811491508115612017575b8115611ff957501590565b5f858152600460205260409020546001600160a01b03161415919050565b905061202385846118fc565b90611fee56fea264697066735822122036339cc180f6c07b8d3c0eab3d70a06b025d42bf8cc92d3f263a89967c1afc8b64736f6c634300081b0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000c5557771673109cab9d05358e1d280fab522597700000000000000000000000000000000156d54b85de04c897356026a5ff2cbc9000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000a492d5b29b3191f028d5a9a848911a0000000000000000000000000000000000bf54a35f528d67c62145161b25c55c
-----Decoded View---------------
Arg [0] : owner (address): 0xC5557771673109CAB9d05358E1D280fab5225977
Arg [1] : delegatedCreationSigner (address): 0x00000000156D54b85de04c897356026a5ff2cBc9
Arg [2] : type1 (bytes32): 0x0000000000000000000000000000000000000000000000000000000000000000
Arg [3] : type2 (bytes32): 0x0000000000000000000000000000000000000000000000000000000000000001
Arg [4] : type1Address (address): 0x0000000000A492d5b29B3191f028D5A9A848911A
Arg [5] : type2Address (address): 0x0000000000Bf54A35f528D67c62145161B25C55C
-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 000000000000000000000000c5557771673109cab9d05358e1d280fab5225977
Arg [1] : 00000000000000000000000000000000156d54b85de04c897356026a5ff2cbc9
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [4] : 0000000000000000000000000000000000a492d5b29b3191f028d5a9a848911a
Arg [5] : 0000000000000000000000000000000000bf54a35f528d67c62145161b25c55c
[ 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.