ERC-721
Overview
Max Total Supply
0 N0XID
Holders
90
Market
Volume (24H)
N/A
Min Price (24H)
N/A
Max Price (24H)
N/A
Other Info
Token Contract
Balance
1 N0XIDLoading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
Nocturnal
Compiler Version
v0.8.14+commit.80d49f37
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-01-10 */ // File: @openzeppelin/contracts/utils/Strings.sol pragma solidity ^0.8.0; /** * @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); } } // File: @openzeppelin/contracts/utils/Context.sol pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // File: @openzeppelin/contracts/access/Ownable.sol pragma solidity ^0.8.0; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _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); } } // File: @openzeppelin/contracts/utils/Address.sol pragma solidity ^0.8.0; /** * @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); } } } } // File: @openzeppelin/contracts/token/ERC721/IERC721Receiver.sol pragma solidity ^0.8.0; /** * @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); } // File: @openzeppelin/contracts/utils/introspection/IERC165.sol pragma solidity ^0.8.0; /** * @dev Interface of the ERC165 standard, as defined in the * https://eips.ethereum.org/EIPS/eip-165[EIP]. * * Implementers can declare support of contract interfaces, which can then be * queried by others ({ERC165Checker}). * * For an implementation, see {ERC165}. */ interface IERC165 { /** * @dev Returns true if this contract implements the interface defined by * `interfaceId`. See the corresponding * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] * to learn more about how these ids are created. * * This function call must use less than 30 000 gas. */ function supportsInterface(bytes4 interfaceId) external view returns (bool); } // File: @openzeppelin/contracts/utils/introspection/ERC165.sol pragma solidity ^0.8.0; /** * @dev Implementation of the {IERC165} interface. * * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check * for the additional interface id that will be supported. For example: * * ```solidity * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); * } * ``` * * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation. */ abstract contract ERC165 is IERC165 { /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IERC165).interfaceId; } } // File: @openzeppelin/contracts/token/ERC721/IERC721.sol pragma solidity ^0.8.0; /** * @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; } // File: @openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol pragma solidity ^0.8.0; /** * @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); } // File: @openzeppelin/contracts/token/ERC721/ERC721.sol pragma solidity ^0.8.0; /** * @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}. */ 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 {} } // File: contracts/Nocturnal/NocturalStage.sol pragma solidity ^0.8.10; contract Nocturnal is Ownable, ERC721 { using Strings for uint256; uint public lastTokenId; uint256 public maxSupply; uint256 public availableSupply; uint public mintPrice; uint public mintFee; address payable public moneyReceiver; uint256 public mintStartAt; uint256 public mintEndAt; mapping(address => uint) public userMinted; uint public maxMintPerUser; uint public redeemStartAt; uint public redeemEndAt; string public baseURI; string public exactURI; event ErrorMoneySend(); modifier withinMintWindow() { require(mintStartAt < block.timestamp && block.timestamp < mintEndAt, "Not a mint window"); _; } constructor( string memory name, string memory symbol, uint256 _maxSupply, uint256 _mintPrice, uint _mintFee, uint _maxMintPerUser, address payable _moneyReceiver ) ERC721(name, symbol) { availableSupply = _maxSupply; maxSupply = _maxSupply; mintPrice = _mintPrice; mintFee = _mintFee; moneyReceiver = _moneyReceiver; maxMintPerUser = _maxMintPerUser; } function setPrices( uint256 _mintPrice, uint _mintFee ) public onlyOwner { mintPrice = _mintPrice; mintFee = _mintFee; } function setBaseURI(string memory __baseURI) public onlyOwner { baseURI = __baseURI; } function setMintDates(uint _mintStartAt, uint _mintEndAt) public onlyOwner { mintStartAt = _mintStartAt; mintEndAt = _mintEndAt; } function setExactURI(string memory __exactURI) public onlyOwner { exactURI = __exactURI; } function tokenURI(uint256 tokenId) public view override returns (string memory) { require(_exists(tokenId), "ERC721Metadata: URI query for nonexistent token"); if(bytes(exactURI).length > 0) { return exactURI; } return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : ""; } function mint() external payable withinMintWindow { require(userMinted[msg.sender] < maxMintPerUser, "exceed max mint amount"); require(msg.value == mintPrice + mintFee, "invalid value"); require(availableSupply > 0, "max cap reached"); availableSupply--; userMinted[msg.sender]++; (bool success, ) = moneyReceiver.call{value: address(this).balance}(""); if(!success) { emit ErrorMoneySend(); } lastTokenId++; _safeMint(msg.sender, lastTokenId); } function mintBatch(uint amount) external payable withinMintWindow { require(userMinted[msg.sender] + amount <= maxMintPerUser, "exceed max mint amount per user"); require(msg.value == (mintPrice + mintFee) * amount, "invalid value"); require(availableSupply >= amount, "max cap reached"); userMinted[msg.sender] += amount; for(uint i = lastTokenId + 1; i <= lastTokenId + amount; i++) { _safeMint(msg.sender, i); } (bool success, ) = moneyReceiver.call{value: address(this).balance}(""); if(!success) { emit ErrorMoneySend(); } availableSupply-= amount; lastTokenId+= amount; } function mintBatchOwnable(uint amount) external onlyOwner { for(uint i = lastTokenId + 1; i <= lastTokenId + amount; i++) { _safeMint(msg.sender, i); } availableSupply-= amount; lastTokenId+= amount; } function supportsInterface(bytes4 interfaceId) public pure override(ERC721) returns(bool) { return interfaceId == 0x01ffc9a7 || // ERC165 Interface ID for ERC165 interfaceId == 0x80ac58cd || // ERC165 Interface ID for ERC721 interfaceId == 0x5b5e139f; // ERC165 Interface ID for ERC721Metadata } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"uint256","name":"_maxSupply","type":"uint256"},{"internalType":"uint256","name":"_mintPrice","type":"uint256"},{"internalType":"uint256","name":"_mintFee","type":"uint256"},{"internalType":"uint256","name":"_maxMintPerUser","type":"uint256"},{"internalType":"address payable","name":"_moneyReceiver","type":"address"}],"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":[],"name":"ErrorMoneySend","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":"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":[],"name":"availableSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[],"name":"exactURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","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":"lastTokenId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxMintPerUser","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mintBatch","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mintBatchOwnable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"mintEndAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mintFee","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":"mintStartAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"moneyReceiver","outputs":[{"internalType":"address payable","name":"","type":"address"}],"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":"redeemEndAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"redeemStartAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"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":"string","name":"__baseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"__exactURI","type":"string"}],"name":"setExactURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_mintStartAt","type":"uint256"},{"internalType":"uint256","name":"_mintEndAt","type":"uint256"}],"name":"setMintDates","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_mintPrice","type":"uint256"},{"internalType":"uint256","name":"_mintFee","type":"uint256"}],"name":"setPrices","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":"view","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":"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":[{"internalType":"address","name":"","type":"address"}],"name":"userMinted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60806040523480156200001157600080fd5b506040516200262238038062002622833981016040819052620000349162000272565b86866200004133620000af565b815162000056906001906020850190620000ff565b5080516200006c906002906020840190620000ff565b5050506009859055600894909455600a92909255600b55600c80546001600160a01b0319166001600160a01b0390931692909217909155601055506200035f9050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8280546200010d9062000323565b90600052602060002090601f0160209004810192826200013157600085556200017c565b82601f106200014c57805160ff19168380011785556200017c565b828001600101855582156200017c579182015b828111156200017c5782518255916020019190600101906200015f565b506200018a9291506200018e565b5090565b5b808211156200018a57600081556001016200018f565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620001cd57600080fd5b81516001600160401b0380821115620001ea57620001ea620001a5565b604051601f8301601f19908116603f01168101908282118183101715620002155762000215620001a5565b816040528381526020925086838588010111156200023257600080fd5b600091505b8382101562000256578582018301518183018401529082019062000237565b83821115620002685760008385830101525b9695505050505050565b600080600080600080600060e0888a0312156200028e57600080fd5b87516001600160401b0380821115620002a657600080fd5b620002b48b838c01620001bb565b985060208a0151915080821115620002cb57600080fd5b50620002da8a828b01620001bb565b96505060408801519450606088015193506080880151925060a0880151915060c088015160018060a01b03811681146200031357600080fd5b8091505092959891949750929550565b600181811c908216806200033857607f821691505b6020821081036200035957634e487b7160e01b600052602260045260246000fd5b50919050565b6122b3806200036f6000396000f3fe60806040526004361061021a5760003560e01c80637d741c8211610123578063bfb27d6c116100ab578063d304c4bc1161006f578063d304c4bc146105d2578063d5abeb01146105e8578063e985e9c5146105fe578063f2fde38b14610647578063f84ddf0b1461066757600080fd5b8063bfb27d6c14610546578063c6c50a8c14610566578063c87b56dd1461057c578063ca343bc61461059c578063ca68a9d6146105bc57600080fd5b806395d89b41116100f257806395d89b41146104c657806397e2d5c1146104db578063a22cb465146104f0578063ad61471414610510578063b88d4fde1461052657600080fd5b80637d741c82146104525780637ecc2b5614610472578063809df89b146104885780638da5cb5b146104a857600080fd5b806323b872dd116101a65780636352211e116101755780636352211e146103d25780636817c76c146103f25780636c0360eb1461040857806370a082311461041d578063715018a61461043d57600080fd5b806323b872dd1461035c57806342842e0e1461037c57806355f804b31461039c5780635694da90146103bc57600080fd5b8063095ea7b3116101ed578063095ea7b3146102d05780631249c58b146102f057806313966db5146102f85780631aa5e8721461031c57806320e409b41461034957600080fd5b806301ffc9a71461021f57806305fefda71461025457806306fdde0314610276578063081812fc14610298575b600080fd5b34801561022b57600080fd5b5061023f61023a366004611c40565b61067d565b60405190151581526020015b60405180910390f35b34801561026057600080fd5b5061027461026f366004611c64565b6106cf565b005b34801561028257600080fd5b5061028b61070d565b60405161024b9190611cde565b3480156102a457600080fd5b506102b86102b3366004611cf1565b61079f565b6040516001600160a01b03909116815260200161024b565b3480156102dc57600080fd5b506102746102eb366004611d26565b610834565b610274610949565b34801561030457600080fd5b5061030e600b5481565b60405190815260200161024b565b34801561032857600080fd5b5061030e610337366004611d50565b600f6020526000908152604090205481565b610274610357366004611cf1565b610b64565b34801561036857600080fd5b50610274610377366004611d6b565b610de1565b34801561038857600080fd5b50610274610397366004611d6b565b610e12565b3480156103a857600080fd5b506102746103b7366004611e33565b610e2d565b3480156103c857600080fd5b5061030e60115481565b3480156103de57600080fd5b506102b86103ed366004611cf1565b610e6e565b3480156103fe57600080fd5b5061030e600a5481565b34801561041457600080fd5b5061028b610ee5565b34801561042957600080fd5b5061030e610438366004611d50565b610f73565b34801561044957600080fd5b50610274610ffa565b34801561045e57600080fd5b5061027461046d366004611c64565b611030565b34801561047e57600080fd5b5061030e60095481565b34801561049457600080fd5b50600c546102b8906001600160a01b031681565b3480156104b457600080fd5b506000546001600160a01b03166102b8565b3480156104d257600080fd5b5061028b611065565b3480156104e757600080fd5b5061028b611074565b3480156104fc57600080fd5b5061027461050b366004611e7c565b611081565b34801561051c57600080fd5b5061030e600d5481565b34801561053257600080fd5b50610274610541366004611eb8565b611145565b34801561055257600080fd5b50610274610561366004611e33565b61117d565b34801561057257600080fd5b5061030e60125481565b34801561058857600080fd5b5061028b610597366004611cf1565b6111ba565b3480156105a857600080fd5b506102746105b7366004611cf1565b61133e565b3480156105c857600080fd5b5061030e600e5481565b3480156105de57600080fd5b5061030e60105481565b3480156105f457600080fd5b5061030e60085481565b34801561060a57600080fd5b5061023f610619366004611f34565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205460ff1690565b34801561065357600080fd5b50610274610662366004611d50565b6113e0565b34801561067357600080fd5b5061030e60075481565b60006301ffc9a760e01b6001600160e01b0319831614806106ae57506380ac58cd60e01b6001600160e01b03198316145b806106c95750635b5e139f60e01b6001600160e01b03198316145b92915050565b6000546001600160a01b031633146107025760405162461bcd60e51b81526004016106f990611f67565b60405180910390fd5b600a91909155600b55565b60606001805461071c90611f9c565b80601f016020809104026020016040519081016040528092919081815260200182805461074890611f9c565b80156107955780601f1061076a57610100808354040283529160200191610795565b820191906000526020600020905b81548152906001019060200180831161077857829003601f168201915b5050505050905090565b6000818152600360205260408120546001600160a01b03166108185760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084016106f9565b506000908152600560205260409020546001600160a01b031690565b600061083f82610e6e565b9050806001600160a01b0316836001600160a01b0316036108ac5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084016106f9565b336001600160a01b03821614806108c857506108c88133610619565b61093a5760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c000000000000000060648201526084016106f9565b6109448383611478565b505050565b42600d5410801561095b5750600e5442105b61099b5760405162461bcd60e51b81526020600482015260116024820152704e6f742061206d696e742077696e646f7760781b60448201526064016106f9565b601054336000908152600f6020526040902054106109f45760405162461bcd60e51b8152602060048201526016602482015275195e18d95959081b585e081b5a5b9d08185b5bdd5b9d60521b60448201526064016106f9565b600b54600a54610a049190611fec565b3414610a425760405162461bcd60e51b815260206004820152600d60248201526c696e76616c69642076616c756560981b60448201526064016106f9565b600060095411610a865760405162461bcd60e51b815260206004820152600f60248201526e1b585e0818d85c081c995858da1959608a1b60448201526064016106f9565b60098054906000610a9683612004565b9091555050336000908152600f60205260408120805491610ab68361201b565b9091555050600c546040516000916001600160a01b03169047908381818185875af1925050503d8060008114610b08576040519150601f19603f3d011682016040523d82523d6000602084013e610b0d565b606091505b5050905080610b40576040517f190b99c9a45b6b8a74c01892bab474e9561b80d64d30c2c790a7435d5b84bc6690600090a15b60078054906000610b508361201b565b9190505550610b61336007546114e6565b50565b42600d54108015610b765750600e5442105b610bb65760405162461bcd60e51b81526020600482015260116024820152704e6f742061206d696e742077696e646f7760781b60448201526064016106f9565b601054336000908152600f6020526040902054610bd4908390611fec565b1115610c225760405162461bcd60e51b815260206004820152601f60248201527f657863656564206d6178206d696e7420616d6f756e742070657220757365720060448201526064016106f9565b80600b54600a54610c339190611fec565b610c3d9190612034565b3414610c7b5760405162461bcd60e51b815260206004820152600d60248201526c696e76616c69642076616c756560981b60448201526064016106f9565b806009541015610cbf5760405162461bcd60e51b815260206004820152600f60248201526e1b585e0818d85c081c995858da1959608a1b60448201526064016106f9565b336000908152600f602052604081208054839290610cde908490611fec565b9091555050600754600090610cf4906001611fec565b90505b81600754610d059190611fec565b8111610d2757610d1533826114e6565b80610d1f8161201b565b915050610cf7565b50600c546040516000916001600160a01b03169047908381818185875af1925050503d8060008114610d75576040519150601f19603f3d011682016040523d82523d6000602084013e610d7a565b606091505b5050905080610dad576040517f190b99c9a45b6b8a74c01892bab474e9561b80d64d30c2c790a7435d5b84bc6690600090a15b8160096000828254610dbf9190612053565b925050819055508160076000828254610dd89190611fec565b90915550505050565b610deb3382611500565b610e075760405162461bcd60e51b81526004016106f99061206a565b6109448383836115f7565b61094483838360405180602001604052806000815250611145565b6000546001600160a01b03163314610e575760405162461bcd60e51b81526004016106f990611f67565b8051610e6a906013906020840190611b91565b5050565b6000818152600360205260408120546001600160a01b0316806106c95760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b60648201526084016106f9565b60138054610ef290611f9c565b80601f0160208091040260200160405190810160405280929190818152602001828054610f1e90611f9c565b8015610f6b5780601f10610f4057610100808354040283529160200191610f6b565b820191906000526020600020905b815481529060010190602001808311610f4e57829003601f168201915b505050505081565b60006001600160a01b038216610fde5760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b60648201526084016106f9565b506001600160a01b031660009081526004602052604090205490565b6000546001600160a01b031633146110245760405162461bcd60e51b81526004016106f990611f67565b61102e6000611797565b565b6000546001600160a01b0316331461105a5760405162461bcd60e51b81526004016106f990611f67565b600d91909155600e55565b60606002805461071c90611f9c565b60148054610ef290611f9c565b336001600160a01b038316036110d95760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016106f9565b3360008181526006602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b61114f3383611500565b61116b5760405162461bcd60e51b81526004016106f99061206a565b611177848484846117e7565b50505050565b6000546001600160a01b031633146111a75760405162461bcd60e51b81526004016106f990611f67565b8051610e6a906014906020840190611b91565b6000818152600360205260409020546060906001600160a01b03166112395760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b60648201526084016106f9565b60006014805461124890611f9c565b905011156112e2576014805461125d90611f9c565b80601f016020809104026020016040519081016040528092919081815260200182805461128990611f9c565b80156112d65780601f106112ab576101008083540402835291602001916112d6565b820191906000526020600020905b8154815290600101906020018083116112b957829003601f168201915b50505050509050919050565b6000601380546112f190611f9c565b90501161130d57604051806020016040528060008152506106c9565b60136113188361181a565b6040516020016113299291906120d7565b60405160208183030381529060405292915050565b6000546001600160a01b031633146113685760405162461bcd60e51b81526004016106f990611f67565b600060075460016113799190611fec565b90505b8160075461138a9190611fec565b81116113ac5761139a33826114e6565b806113a48161201b565b91505061137c565b5080600960008282546113bf9190612053565b9250508190555080600760008282546113d89190611fec565b909155505050565b6000546001600160a01b0316331461140a5760405162461bcd60e51b81526004016106f990611f67565b6001600160a01b03811661146f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106f9565b610b6181611797565b600081815260056020526040902080546001600160a01b0319166001600160a01b03841690811790915581906114ad82610e6e565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b610e6a82826040518060200160405280600081525061191b565b6000818152600360205260408120546001600160a01b03166115795760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084016106f9565b600061158483610e6e565b9050806001600160a01b0316846001600160a01b031614806115bf5750836001600160a01b03166115b48461079f565b6001600160a01b0316145b806115ef57506001600160a01b0380821660009081526006602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b031661160a82610e6e565b6001600160a01b0316146116725760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b60648201526084016106f9565b6001600160a01b0382166116d45760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016106f9565b6116df600082611478565b6001600160a01b0383166000908152600460205260408120805460019290611708908490612053565b90915550506001600160a01b0382166000908152600460205260408120805460019290611736908490611fec565b909155505060008181526003602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6117f28484846115f7565b6117fe8484848461194e565b6111775760405162461bcd60e51b81526004016106f99061217d565b6060816000036118415750506040805180820190915260018152600360fc1b602082015290565b8160005b811561186b57806118558161201b565b91506118649050600a836121e5565b9150611845565b60008167ffffffffffffffff81111561188657611886611da7565b6040519080825280601f01601f1916602001820160405280156118b0576020820181803683370190505b5090505b84156115ef576118c5600183612053565b91506118d2600a866121f9565b6118dd906030611fec565b60f81b8183815181106118f2576118f261220d565b60200101906001600160f81b031916908160001a905350611914600a866121e5565b94506118b4565b6119258383611a4f565b611932600084848461194e565b6109445760405162461bcd60e51b81526004016106f99061217d565b60006001600160a01b0384163b15611a4457604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290611992903390899088908890600401612223565b6020604051808303816000875af19250505080156119cd575060408051601f3d908101601f191682019092526119ca91810190612260565b60015b611a2a573d8080156119fb576040519150601f19603f3d011682016040523d82523d6000602084013e611a00565b606091505b508051600003611a225760405162461bcd60e51b81526004016106f99061217d565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506115ef565b506001949350505050565b6001600160a01b038216611aa55760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016106f9565b6000818152600360205260409020546001600160a01b031615611b0a5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016106f9565b6001600160a01b0382166000908152600460205260408120805460019290611b33908490611fec565b909155505060008181526003602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b828054611b9d90611f9c565b90600052602060002090601f016020900481019282611bbf5760008555611c05565b82601f10611bd857805160ff1916838001178555611c05565b82800160010185558215611c05579182015b82811115611c05578251825591602001919060010190611bea565b50611c11929150611c15565b5090565b5b80821115611c115760008155600101611c16565b6001600160e01b031981168114610b6157600080fd5b600060208284031215611c5257600080fd5b8135611c5d81611c2a565b9392505050565b60008060408385031215611c7757600080fd5b50508035926020909101359150565b60005b83811015611ca1578181015183820152602001611c89565b838111156111775750506000910152565b60008151808452611cca816020860160208601611c86565b601f01601f19169290920160200192915050565b602081526000611c5d6020830184611cb2565b600060208284031215611d0357600080fd5b5035919050565b80356001600160a01b0381168114611d2157600080fd5b919050565b60008060408385031215611d3957600080fd5b611d4283611d0a565b946020939093013593505050565b600060208284031215611d6257600080fd5b611c5d82611d0a565b600080600060608486031215611d8057600080fd5b611d8984611d0a565b9250611d9760208501611d0a565b9150604084013590509250925092565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff80841115611dd857611dd8611da7565b604051601f8501601f19908116603f01168101908282118183101715611e0057611e00611da7565b81604052809350858152868686011115611e1957600080fd5b858560208301376000602087830101525050509392505050565b600060208284031215611e4557600080fd5b813567ffffffffffffffff811115611e5c57600080fd5b8201601f81018413611e6d57600080fd5b6115ef84823560208401611dbd565b60008060408385031215611e8f57600080fd5b611e9883611d0a565b915060208301358015158114611ead57600080fd5b809150509250929050565b60008060008060808587031215611ece57600080fd5b611ed785611d0a565b9350611ee560208601611d0a565b925060408501359150606085013567ffffffffffffffff811115611f0857600080fd5b8501601f81018713611f1957600080fd5b611f2887823560208401611dbd565b91505092959194509250565b60008060408385031215611f4757600080fd5b611f5083611d0a565b9150611f5e60208401611d0a565b90509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c90821680611fb057607f821691505b602082108103611fd057634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008219821115611fff57611fff611fd6565b500190565b60008161201357612013611fd6565b506000190190565b60006001820161202d5761202d611fd6565b5060010190565b600081600019048311821515161561204e5761204e611fd6565b500290565b60008282101561206557612065611fd6565b500390565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b600081516120cd818560208601611c86565b9290920192915050565b600080845481600182811c9150808316806120f357607f831692505b6020808410820361211257634e487b7160e01b86526022600452602486fd5b818015612126576001811461213757612164565b60ff19861689528489019650612164565b60008b81526020902060005b8681101561215c5781548b820152908501908301612143565b505084890196505b50505050505061217481856120bb565b95945050505050565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b634e487b7160e01b600052601260045260246000fd5b6000826121f4576121f46121cf565b500490565b600082612208576122086121cf565b500690565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061225690830184611cb2565b9695505050505050565b60006020828403121561227257600080fd5b8151611c5d81611c2a56fea264697066735822122009dc95e43085605cfb02492e7713e3c47e28226a2b058824282b39b2a3af97c964736f6c634300080e003300000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000007d000000000000000000000000000000000000000000000000003782dace9d9000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000dc9781bf813d46b686e8458d81457c184722c212000000000000000000000000000000000000000000000000000000000000000c4e6f637475726e616c204944000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000054e30584944000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x60806040526004361061021a5760003560e01c80637d741c8211610123578063bfb27d6c116100ab578063d304c4bc1161006f578063d304c4bc146105d2578063d5abeb01146105e8578063e985e9c5146105fe578063f2fde38b14610647578063f84ddf0b1461066757600080fd5b8063bfb27d6c14610546578063c6c50a8c14610566578063c87b56dd1461057c578063ca343bc61461059c578063ca68a9d6146105bc57600080fd5b806395d89b41116100f257806395d89b41146104c657806397e2d5c1146104db578063a22cb465146104f0578063ad61471414610510578063b88d4fde1461052657600080fd5b80637d741c82146104525780637ecc2b5614610472578063809df89b146104885780638da5cb5b146104a857600080fd5b806323b872dd116101a65780636352211e116101755780636352211e146103d25780636817c76c146103f25780636c0360eb1461040857806370a082311461041d578063715018a61461043d57600080fd5b806323b872dd1461035c57806342842e0e1461037c57806355f804b31461039c5780635694da90146103bc57600080fd5b8063095ea7b3116101ed578063095ea7b3146102d05780631249c58b146102f057806313966db5146102f85780631aa5e8721461031c57806320e409b41461034957600080fd5b806301ffc9a71461021f57806305fefda71461025457806306fdde0314610276578063081812fc14610298575b600080fd5b34801561022b57600080fd5b5061023f61023a366004611c40565b61067d565b60405190151581526020015b60405180910390f35b34801561026057600080fd5b5061027461026f366004611c64565b6106cf565b005b34801561028257600080fd5b5061028b61070d565b60405161024b9190611cde565b3480156102a457600080fd5b506102b86102b3366004611cf1565b61079f565b6040516001600160a01b03909116815260200161024b565b3480156102dc57600080fd5b506102746102eb366004611d26565b610834565b610274610949565b34801561030457600080fd5b5061030e600b5481565b60405190815260200161024b565b34801561032857600080fd5b5061030e610337366004611d50565b600f6020526000908152604090205481565b610274610357366004611cf1565b610b64565b34801561036857600080fd5b50610274610377366004611d6b565b610de1565b34801561038857600080fd5b50610274610397366004611d6b565b610e12565b3480156103a857600080fd5b506102746103b7366004611e33565b610e2d565b3480156103c857600080fd5b5061030e60115481565b3480156103de57600080fd5b506102b86103ed366004611cf1565b610e6e565b3480156103fe57600080fd5b5061030e600a5481565b34801561041457600080fd5b5061028b610ee5565b34801561042957600080fd5b5061030e610438366004611d50565b610f73565b34801561044957600080fd5b50610274610ffa565b34801561045e57600080fd5b5061027461046d366004611c64565b611030565b34801561047e57600080fd5b5061030e60095481565b34801561049457600080fd5b50600c546102b8906001600160a01b031681565b3480156104b457600080fd5b506000546001600160a01b03166102b8565b3480156104d257600080fd5b5061028b611065565b3480156104e757600080fd5b5061028b611074565b3480156104fc57600080fd5b5061027461050b366004611e7c565b611081565b34801561051c57600080fd5b5061030e600d5481565b34801561053257600080fd5b50610274610541366004611eb8565b611145565b34801561055257600080fd5b50610274610561366004611e33565b61117d565b34801561057257600080fd5b5061030e60125481565b34801561058857600080fd5b5061028b610597366004611cf1565b6111ba565b3480156105a857600080fd5b506102746105b7366004611cf1565b61133e565b3480156105c857600080fd5b5061030e600e5481565b3480156105de57600080fd5b5061030e60105481565b3480156105f457600080fd5b5061030e60085481565b34801561060a57600080fd5b5061023f610619366004611f34565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205460ff1690565b34801561065357600080fd5b50610274610662366004611d50565b6113e0565b34801561067357600080fd5b5061030e60075481565b60006301ffc9a760e01b6001600160e01b0319831614806106ae57506380ac58cd60e01b6001600160e01b03198316145b806106c95750635b5e139f60e01b6001600160e01b03198316145b92915050565b6000546001600160a01b031633146107025760405162461bcd60e51b81526004016106f990611f67565b60405180910390fd5b600a91909155600b55565b60606001805461071c90611f9c565b80601f016020809104026020016040519081016040528092919081815260200182805461074890611f9c565b80156107955780601f1061076a57610100808354040283529160200191610795565b820191906000526020600020905b81548152906001019060200180831161077857829003601f168201915b5050505050905090565b6000818152600360205260408120546001600160a01b03166108185760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084016106f9565b506000908152600560205260409020546001600160a01b031690565b600061083f82610e6e565b9050806001600160a01b0316836001600160a01b0316036108ac5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084016106f9565b336001600160a01b03821614806108c857506108c88133610619565b61093a5760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c000000000000000060648201526084016106f9565b6109448383611478565b505050565b42600d5410801561095b5750600e5442105b61099b5760405162461bcd60e51b81526020600482015260116024820152704e6f742061206d696e742077696e646f7760781b60448201526064016106f9565b601054336000908152600f6020526040902054106109f45760405162461bcd60e51b8152602060048201526016602482015275195e18d95959081b585e081b5a5b9d08185b5bdd5b9d60521b60448201526064016106f9565b600b54600a54610a049190611fec565b3414610a425760405162461bcd60e51b815260206004820152600d60248201526c696e76616c69642076616c756560981b60448201526064016106f9565b600060095411610a865760405162461bcd60e51b815260206004820152600f60248201526e1b585e0818d85c081c995858da1959608a1b60448201526064016106f9565b60098054906000610a9683612004565b9091555050336000908152600f60205260408120805491610ab68361201b565b9091555050600c546040516000916001600160a01b03169047908381818185875af1925050503d8060008114610b08576040519150601f19603f3d011682016040523d82523d6000602084013e610b0d565b606091505b5050905080610b40576040517f190b99c9a45b6b8a74c01892bab474e9561b80d64d30c2c790a7435d5b84bc6690600090a15b60078054906000610b508361201b565b9190505550610b61336007546114e6565b50565b42600d54108015610b765750600e5442105b610bb65760405162461bcd60e51b81526020600482015260116024820152704e6f742061206d696e742077696e646f7760781b60448201526064016106f9565b601054336000908152600f6020526040902054610bd4908390611fec565b1115610c225760405162461bcd60e51b815260206004820152601f60248201527f657863656564206d6178206d696e7420616d6f756e742070657220757365720060448201526064016106f9565b80600b54600a54610c339190611fec565b610c3d9190612034565b3414610c7b5760405162461bcd60e51b815260206004820152600d60248201526c696e76616c69642076616c756560981b60448201526064016106f9565b806009541015610cbf5760405162461bcd60e51b815260206004820152600f60248201526e1b585e0818d85c081c995858da1959608a1b60448201526064016106f9565b336000908152600f602052604081208054839290610cde908490611fec565b9091555050600754600090610cf4906001611fec565b90505b81600754610d059190611fec565b8111610d2757610d1533826114e6565b80610d1f8161201b565b915050610cf7565b50600c546040516000916001600160a01b03169047908381818185875af1925050503d8060008114610d75576040519150601f19603f3d011682016040523d82523d6000602084013e610d7a565b606091505b5050905080610dad576040517f190b99c9a45b6b8a74c01892bab474e9561b80d64d30c2c790a7435d5b84bc6690600090a15b8160096000828254610dbf9190612053565b925050819055508160076000828254610dd89190611fec565b90915550505050565b610deb3382611500565b610e075760405162461bcd60e51b81526004016106f99061206a565b6109448383836115f7565b61094483838360405180602001604052806000815250611145565b6000546001600160a01b03163314610e575760405162461bcd60e51b81526004016106f990611f67565b8051610e6a906013906020840190611b91565b5050565b6000818152600360205260408120546001600160a01b0316806106c95760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b60648201526084016106f9565b60138054610ef290611f9c565b80601f0160208091040260200160405190810160405280929190818152602001828054610f1e90611f9c565b8015610f6b5780601f10610f4057610100808354040283529160200191610f6b565b820191906000526020600020905b815481529060010190602001808311610f4e57829003601f168201915b505050505081565b60006001600160a01b038216610fde5760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b60648201526084016106f9565b506001600160a01b031660009081526004602052604090205490565b6000546001600160a01b031633146110245760405162461bcd60e51b81526004016106f990611f67565b61102e6000611797565b565b6000546001600160a01b0316331461105a5760405162461bcd60e51b81526004016106f990611f67565b600d91909155600e55565b60606002805461071c90611f9c565b60148054610ef290611f9c565b336001600160a01b038316036110d95760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016106f9565b3360008181526006602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b61114f3383611500565b61116b5760405162461bcd60e51b81526004016106f99061206a565b611177848484846117e7565b50505050565b6000546001600160a01b031633146111a75760405162461bcd60e51b81526004016106f990611f67565b8051610e6a906014906020840190611b91565b6000818152600360205260409020546060906001600160a01b03166112395760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b60648201526084016106f9565b60006014805461124890611f9c565b905011156112e2576014805461125d90611f9c565b80601f016020809104026020016040519081016040528092919081815260200182805461128990611f9c565b80156112d65780601f106112ab576101008083540402835291602001916112d6565b820191906000526020600020905b8154815290600101906020018083116112b957829003601f168201915b50505050509050919050565b6000601380546112f190611f9c565b90501161130d57604051806020016040528060008152506106c9565b60136113188361181a565b6040516020016113299291906120d7565b60405160208183030381529060405292915050565b6000546001600160a01b031633146113685760405162461bcd60e51b81526004016106f990611f67565b600060075460016113799190611fec565b90505b8160075461138a9190611fec565b81116113ac5761139a33826114e6565b806113a48161201b565b91505061137c565b5080600960008282546113bf9190612053565b9250508190555080600760008282546113d89190611fec565b909155505050565b6000546001600160a01b0316331461140a5760405162461bcd60e51b81526004016106f990611f67565b6001600160a01b03811661146f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106f9565b610b6181611797565b600081815260056020526040902080546001600160a01b0319166001600160a01b03841690811790915581906114ad82610e6e565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b610e6a82826040518060200160405280600081525061191b565b6000818152600360205260408120546001600160a01b03166115795760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084016106f9565b600061158483610e6e565b9050806001600160a01b0316846001600160a01b031614806115bf5750836001600160a01b03166115b48461079f565b6001600160a01b0316145b806115ef57506001600160a01b0380821660009081526006602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b031661160a82610e6e565b6001600160a01b0316146116725760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b60648201526084016106f9565b6001600160a01b0382166116d45760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016106f9565b6116df600082611478565b6001600160a01b0383166000908152600460205260408120805460019290611708908490612053565b90915550506001600160a01b0382166000908152600460205260408120805460019290611736908490611fec565b909155505060008181526003602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6117f28484846115f7565b6117fe8484848461194e565b6111775760405162461bcd60e51b81526004016106f99061217d565b6060816000036118415750506040805180820190915260018152600360fc1b602082015290565b8160005b811561186b57806118558161201b565b91506118649050600a836121e5565b9150611845565b60008167ffffffffffffffff81111561188657611886611da7565b6040519080825280601f01601f1916602001820160405280156118b0576020820181803683370190505b5090505b84156115ef576118c5600183612053565b91506118d2600a866121f9565b6118dd906030611fec565b60f81b8183815181106118f2576118f261220d565b60200101906001600160f81b031916908160001a905350611914600a866121e5565b94506118b4565b6119258383611a4f565b611932600084848461194e565b6109445760405162461bcd60e51b81526004016106f99061217d565b60006001600160a01b0384163b15611a4457604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290611992903390899088908890600401612223565b6020604051808303816000875af19250505080156119cd575060408051601f3d908101601f191682019092526119ca91810190612260565b60015b611a2a573d8080156119fb576040519150601f19603f3d011682016040523d82523d6000602084013e611a00565b606091505b508051600003611a225760405162461bcd60e51b81526004016106f99061217d565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506115ef565b506001949350505050565b6001600160a01b038216611aa55760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016106f9565b6000818152600360205260409020546001600160a01b031615611b0a5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016106f9565b6001600160a01b0382166000908152600460205260408120805460019290611b33908490611fec565b909155505060008181526003602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b828054611b9d90611f9c565b90600052602060002090601f016020900481019282611bbf5760008555611c05565b82601f10611bd857805160ff1916838001178555611c05565b82800160010185558215611c05579182015b82811115611c05578251825591602001919060010190611bea565b50611c11929150611c15565b5090565b5b80821115611c115760008155600101611c16565b6001600160e01b031981168114610b6157600080fd5b600060208284031215611c5257600080fd5b8135611c5d81611c2a565b9392505050565b60008060408385031215611c7757600080fd5b50508035926020909101359150565b60005b83811015611ca1578181015183820152602001611c89565b838111156111775750506000910152565b60008151808452611cca816020860160208601611c86565b601f01601f19169290920160200192915050565b602081526000611c5d6020830184611cb2565b600060208284031215611d0357600080fd5b5035919050565b80356001600160a01b0381168114611d2157600080fd5b919050565b60008060408385031215611d3957600080fd5b611d4283611d0a565b946020939093013593505050565b600060208284031215611d6257600080fd5b611c5d82611d0a565b600080600060608486031215611d8057600080fd5b611d8984611d0a565b9250611d9760208501611d0a565b9150604084013590509250925092565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff80841115611dd857611dd8611da7565b604051601f8501601f19908116603f01168101908282118183101715611e0057611e00611da7565b81604052809350858152868686011115611e1957600080fd5b858560208301376000602087830101525050509392505050565b600060208284031215611e4557600080fd5b813567ffffffffffffffff811115611e5c57600080fd5b8201601f81018413611e6d57600080fd5b6115ef84823560208401611dbd565b60008060408385031215611e8f57600080fd5b611e9883611d0a565b915060208301358015158114611ead57600080fd5b809150509250929050565b60008060008060808587031215611ece57600080fd5b611ed785611d0a565b9350611ee560208601611d0a565b925060408501359150606085013567ffffffffffffffff811115611f0857600080fd5b8501601f81018713611f1957600080fd5b611f2887823560208401611dbd565b91505092959194509250565b60008060408385031215611f4757600080fd5b611f5083611d0a565b9150611f5e60208401611d0a565b90509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c90821680611fb057607f821691505b602082108103611fd057634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008219821115611fff57611fff611fd6565b500190565b60008161201357612013611fd6565b506000190190565b60006001820161202d5761202d611fd6565b5060010190565b600081600019048311821515161561204e5761204e611fd6565b500290565b60008282101561206557612065611fd6565b500390565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b600081516120cd818560208601611c86565b9290920192915050565b600080845481600182811c9150808316806120f357607f831692505b6020808410820361211257634e487b7160e01b86526022600452602486fd5b818015612126576001811461213757612164565b60ff19861689528489019650612164565b60008b81526020902060005b8681101561215c5781548b820152908501908301612143565b505084890196505b50505050505061217481856120bb565b95945050505050565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b634e487b7160e01b600052601260045260246000fd5b6000826121f4576121f46121cf565b500490565b600082612208576122086121cf565b500690565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061225690830184611cb2565b9695505050505050565b60006020828403121561227257600080fd5b8151611c5d81611c2a56fea264697066735822122009dc95e43085605cfb02492e7713e3c47e28226a2b058824282b39b2a3af97c964736f6c634300080e0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000007d000000000000000000000000000000000000000000000000003782dace9d9000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000dc9781bf813d46b686e8458d81457c184722c212000000000000000000000000000000000000000000000000000000000000000c4e6f637475726e616c204944000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000054e30584944000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : name (string): Nocturnal ID
Arg [1] : symbol (string): N0XID
Arg [2] : _maxSupply (uint256): 2000
Arg [3] : _mintPrice (uint256): 250000000000000000
Arg [4] : _mintFee (uint256): 0
Arg [5] : _maxMintPerUser (uint256): 3
Arg [6] : _moneyReceiver (address): 0xDC9781Bf813d46B686e8458d81457C184722C212
-----Encoded View---------------
11 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000000000000000000000000000000e0
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000120
Arg [2] : 00000000000000000000000000000000000000000000000000000000000007d0
Arg [3] : 00000000000000000000000000000000000000000000000003782dace9d90000
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [6] : 000000000000000000000000dc9781bf813d46b686e8458d81457c184722c212
Arg [7] : 000000000000000000000000000000000000000000000000000000000000000c
Arg [8] : 4e6f637475726e616c2049440000000000000000000000000000000000000000
Arg [9] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [10] : 4e30584944000000000000000000000000000000000000000000000000000000
Deployed Bytecode Sourcemap
35130:4047:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38784:390;;;;;;;;;;-1:-1:-1;38784:390:0;;;;;:::i;:::-;;:::i;:::-;;;565:14:1;;558:22;540:41;;528:2;513:18;38784:390:0;;;;;;;;36364:166;;;;;;;;;;-1:-1:-1;36364:166:0;;;;;:::i;:::-;;:::i;:::-;;23868:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;25427:221::-;;;;;;;;;;-1:-1:-1;25427:221:0;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;1967:32:1;;;1949:51;;1937:2;1922:18;25427:221:0;1803:203:1;24950:411:0;;;;;;;;;;-1:-1:-1;24950:411:0;;;;;:::i;:::-;;:::i;37287:533::-;;;:::i;35337:19::-;;;;;;;;;;;;;;;;;;;2594:25:1;;;2582:2;2567:18;35337:19:0;2448:177:1;35478:42:0;;;;;;;;;;-1:-1:-1;35478:42:0;;;;;:::i;:::-;;;;;;;;;;;;;;37826:689;;;;;;:::i;:::-;;:::i;26317:339::-;;;;;;;;;;-1:-1:-1;26317:339:0;;;;;:::i;:::-;;:::i;26727:185::-;;;;;;;;;;-1:-1:-1;26727:185:0;;;;;:::i;:::-;;:::i;36538:100::-;;;;;;;;;;-1:-1:-1;36538:100:0;;;;;:::i;:::-;;:::i;35562:25::-;;;;;;;;;;;;;;;;23562:239;;;;;;;;;;-1:-1:-1;23562:239:0;;;;;:::i;:::-;;:::i;35309:21::-;;;;;;;;;;;;;;;;35626;;;;;;;;;;;;;:::i;23292:208::-;;;;;;;;;;-1:-1:-1;23292:208:0;;;;;:::i;:::-;;:::i;4558:94::-;;;;;;;;;;;;;:::i;36646:153::-;;;;;;;;;;-1:-1:-1;36646:153:0;;;;;:::i;:::-;;:::i;35270:30::-;;;;;;;;;;;;;;;;35363:36;;;;;;;;;;-1:-1:-1;35363:36:0;;;;-1:-1:-1;;;;;35363:36:0;;;3907:87;;;;;;;;;;-1:-1:-1;3953:7:0;3980:6;-1:-1:-1;;;;;3980:6:0;3907:87;;24037:104;;;;;;;;;;;;;:::i;35654:22::-;;;;;;;;;;;;;:::i;25720:295::-;;;;;;;;;;-1:-1:-1;25720:295:0;;;;;:::i;:::-;;:::i;35412:26::-;;;;;;;;;;;;;;;;26983:328;;;;;;;;;;-1:-1:-1;26983:328:0;;;;;:::i;:::-;;:::i;36807:104::-;;;;;;;;;;-1:-1:-1;36807:104:0;;;;;:::i;:::-;;:::i;35594:23::-;;;;;;;;;;;;;;;;36919:362;;;;;;;;;;-1:-1:-1;36919:362:0;;;;;:::i;:::-;;:::i;38521:255::-;;;;;;;;;;-1:-1:-1;38521:255:0;;;;;:::i;:::-;;:::i;35445:24::-;;;;;;;;;;;;;;;;35527:26;;;;;;;;;;;;;;;;35239:24;;;;;;;;;;;;;;;;26086:164;;;;;;;;;;-1:-1:-1;26086:164:0;;;;;:::i;:::-;-1:-1:-1;;;;;26207:25:0;;;26183:4;26207:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;26086:164;4807:192;;;;;;;;;;-1:-1:-1;4807:192:0;;;;;:::i;:::-;;:::i;35209:23::-;;;;;;;;;;;;;;;;38784:390;38904:4;-1:-1:-1;;;;;;;;;38946:25:0;;;;:101;;-1:-1:-1;;;;;;;;;;39022:25:0;;;38946:101;:177;;;-1:-1:-1;;;;;;;;;;39098:25:0;;;38946:177;38926:197;38784:390;-1:-1:-1;;38784:390:0:o;36364:166::-;3953:7;3980:6;-1:-1:-1;;;;;3980:6:0;2775:10;4127:23;4119:68;;;;-1:-1:-1;;;4119:68:0;;;;;;;:::i;:::-;;;;;;;;;36471:9:::1;:22:::0;;;;36504:7:::1;:18:::0;36364:166::o;23868:100::-;23922:13;23955:5;23948:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23868:100;:::o;25427:221::-;25503:7;28910:16;;;:7;:16;;;;;;-1:-1:-1;;;;;28910:16:0;25523:73;;;;-1:-1:-1;;;25523:73:0;;6840:2:1;25523:73:0;;;6822:21:1;6879:2;6859:18;;;6852:30;6918:34;6898:18;;;6891:62;-1:-1:-1;;;6969:18:1;;;6962:42;7021:19;;25523:73:0;6638:408:1;25523:73:0;-1:-1:-1;25616:24:0;;;;:15;:24;;;;;;-1:-1:-1;;;;;25616:24:0;;25427:221::o;24950:411::-;25031:13;25047:23;25062:7;25047:14;:23::i;:::-;25031:39;;25095:5;-1:-1:-1;;;;;25089:11:0;:2;-1:-1:-1;;;;;25089:11:0;;25081:57;;;;-1:-1:-1;;;25081:57:0;;7253:2:1;25081:57:0;;;7235:21:1;7292:2;7272:18;;;7265:30;7331:34;7311:18;;;7304:62;-1:-1:-1;;;7382:18:1;;;7375:31;7423:19;;25081:57:0;7051:397:1;25081:57:0;2775:10;-1:-1:-1;;;;;25173:21:0;;;;:62;;-1:-1:-1;25198:37:0;25215:5;2775:10;26086:164;:::i;25198:37::-;25151:168;;;;-1:-1:-1;;;25151:168:0;;7655:2:1;25151:168:0;;;7637:21:1;7694:2;7674:18;;;7667:30;7733:34;7713:18;;;7706:62;7804:26;7784:18;;;7777:54;7848:19;;25151:168:0;7453:420:1;25151:168:0;25332:21;25341:2;25345:7;25332:8;:21::i;:::-;25020:341;24950:411;;:::o;37287:533::-;35777:15;35763:11;;:29;:60;;;;;35814:9;;35796:15;:27;35763:60;35755:90;;;;-1:-1:-1;;;35755:90:0;;8080:2:1;35755:90:0;;;8062:21:1;8119:2;8099:18;;;8092:30;-1:-1:-1;;;8138:18:1;;;8131:47;8195:18;;35755:90:0;7878:341:1;35755:90:0;37379:14:::1;::::0;37365:10:::1;37354:22;::::0;;;:10:::1;:22;::::0;;;;;:39:::1;37346:74;;;::::0;-1:-1:-1;;;37346:74:0;;8426:2:1;37346:74:0::1;::::0;::::1;8408:21:1::0;8465:2;8445:18;;;8438:30;-1:-1:-1;;;8484:18:1;;;8477:52;8546:18;;37346:74:0::1;8224:346:1::0;37346:74:0::1;37462:7;;37450:9;;:19;;;;:::i;:::-;37437:9;:32;37429:58;;;::::0;-1:-1:-1;;;37429:58:0;;9042:2:1;37429:58:0::1;::::0;::::1;9024:21:1::0;9081:2;9061:18;;;9054:30;-1:-1:-1;;;9100:18:1;;;9093:43;9153:18;;37429:58:0::1;8840:337:1::0;37429:58:0::1;37522:1;37504:15;;:19;37496:47;;;::::0;-1:-1:-1;;;37496:47:0;;9384:2:1;37496:47:0::1;::::0;::::1;9366:21:1::0;9423:2;9403:18;;;9396:30;-1:-1:-1;;;9442:18:1;;;9435:45;9497:18;;37496:47:0::1;9182:339:1::0;37496:47:0::1;37552:15;:17:::0;;;:15:::1;:17;::::0;::::1;:::i;:::-;::::0;;;-1:-1:-1;;37589:10:0::1;37578:22;::::0;;;:10:::1;:22;::::0;;;;:24;;;::::1;::::0;::::1;:::i;:::-;::::0;;;-1:-1:-1;;37632:13:0::1;::::0;:52:::1;::::0;37614:12:::1;::::0;-1:-1:-1;;;;;37632:13:0::1;::::0;37658:21:::1;::::0;37614:12;37632:52;37614:12;37632:52;37658:21;37632:13;:52:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37613:71;;;37697:7;37693:55;;37722:16;::::0;::::1;::::0;;;::::1;37693:55;37758:11;:13:::0;;;:11:::1;:13;::::0;::::1;:::i;:::-;;;;;;37780:34;37790:10;37802:11;;37780:9;:34::i;:::-;37337:483;37287:533::o:0;37826:689::-;35777:15;35763:11;;:29;:60;;;;;35814:9;;35796:15;:27;35763:60;35755:90;;;;-1:-1:-1;;;35755:90:0;;8080:2:1;35755:90:0;;;8062:21:1;8119:2;8099:18;;;8092:30;-1:-1:-1;;;8138:18:1;;;8131:47;8195:18;;35755:90:0;7878:341:1;35755:90:0;37944:14:::1;::::0;37920:10:::1;37909:22;::::0;;;:10:::1;:22;::::0;;;;;:31:::1;::::0;37934:6;;37909:31:::1;:::i;:::-;:49;;37901:93;;;::::0;-1:-1:-1;;;37901:93:0;;10219:2:1;37901:93:0::1;::::0;::::1;10201:21:1::0;10258:2;10238:18;;;10231:30;10297:33;10277:18;;;10270:61;10348:18;;37901:93:0::1;10017:355:1::0;37901:93:0::1;38050:6;38039:7;;38027:9;;:19;;;;:::i;:::-;38026:30;;;;:::i;:::-;38013:9;:43;38005:69;;;::::0;-1:-1:-1;;;38005:69:0;;9042:2:1;38005:69:0::1;::::0;::::1;9024:21:1::0;9081:2;9061:18;;;9054:30;-1:-1:-1;;;9100:18:1;;;9093:43;9153:18;;38005:69:0::1;8840:337:1::0;38005:69:0::1;38110:6;38091:15;;:25;;38083:53;;;::::0;-1:-1:-1;;;38083:53:0;;9384:2:1;38083:53:0::1;::::0;::::1;9366:21:1::0;9423:2;9403:18;;;9396:30;-1:-1:-1;;;9442:18:1;;;9435:45;9497:18;;38083:53:0::1;9182:339:1::0;38083:53:0::1;38158:10;38147:22;::::0;;;:10:::1;:22;::::0;;;;:32;;38173:6;;38147:22;:32:::1;::::0;38173:6;;38147:32:::1;:::i;:::-;::::0;;;-1:-1:-1;;38203:11:0::1;::::0;38194:6:::1;::::0;38203:15:::1;::::0;38217:1:::1;38203:15;:::i;:::-;38194:24;;38190:109;38239:6;38225:11;;:20;;;;:::i;:::-;38220:1;:25;38190:109;;38265:24;38275:10;38287:1;38265:9;:24::i;:::-;38247:3:::0;::::1;::::0;::::1;:::i;:::-;;;;38190:109;;;-1:-1:-1::0;38328:13:0::1;::::0;:52:::1;::::0;38310:12:::1;::::0;-1:-1:-1;;;;;38328:13:0::1;::::0;38354:21:::1;::::0;38310:12;38328:52;38310:12;38328:52;38354:21;38328:13;:52:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38309:71;;;38393:7;38389:57;;38420:16;::::0;::::1;::::0;;;::::1;38389:57;38474:6;38456:15;;:24;;;;;;;:::i;:::-;;;;;;;;38503:6;38489:11;;:20;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;;;37826:689:0:o;26317:339::-;26512:41;2775:10;26545:7;26512:18;:41::i;:::-;26504:103;;;;-1:-1:-1;;;26504:103:0;;;;;;;:::i;:::-;26620:28;26630:4;26636:2;26640:7;26620:9;:28::i;26727:185::-;26865:39;26882:4;26888:2;26892:7;26865:39;;;;;;;;;;;;:16;:39::i;36538:100::-;3953:7;3980:6;-1:-1:-1;;;;;3980:6:0;2775:10;4127:23;4119:68;;;;-1:-1:-1;;;4119:68:0;;;;;;;:::i;:::-;36611:19;;::::1;::::0;:7:::1;::::0;:19:::1;::::0;::::1;::::0;::::1;:::i;:::-;;36538:100:::0;:::o;23562:239::-;23634:7;23670:16;;;:7;:16;;;;;;-1:-1:-1;;;;;23670:16:0;;23697:73;;;;-1:-1:-1;;;23697:73:0;;11300:2:1;23697:73:0;;;11282:21:1;11339:2;11319:18;;;11312:30;11378:34;11358:18;;;11351:62;-1:-1:-1;;;11429:18:1;;;11422:39;11478:19;;23697:73:0;11098:405:1;35626:21:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;23292:208::-;23364:7;-1:-1:-1;;;;;23392:19:0;;23384:74;;;;-1:-1:-1;;;23384:74:0;;11710:2:1;23384:74:0;;;11692:21:1;11749:2;11729:18;;;11722:30;11788:34;11768:18;;;11761:62;-1:-1:-1;;;11839:18:1;;;11832:40;11889:19;;23384:74:0;11508:406:1;23384:74:0;-1:-1:-1;;;;;;23476:16:0;;;;;:9;:16;;;;;;;23292:208::o;4558:94::-;3953:7;3980:6;-1:-1:-1;;;;;3980:6:0;2775:10;4127:23;4119:68;;;;-1:-1:-1;;;4119:68:0;;;;;;;:::i;:::-;4623:21:::1;4641:1;4623:9;:21::i;:::-;4558:94::o:0;36646:153::-;3953:7;3980:6;-1:-1:-1;;;;;3980:6:0;2775:10;4127:23;4119:68;;;;-1:-1:-1;;;4119:68:0;;;;;;;:::i;:::-;36732:11:::1;:26:::0;;;;36769:9:::1;:22:::0;36646:153::o;24037:104::-;24093:13;24126:7;24119:14;;;;;:::i;35654:22::-;;;;;;;:::i;25720:295::-;2775:10;-1:-1:-1;;;;;25823:24:0;;;25815:62;;;;-1:-1:-1;;;25815:62:0;;12121:2:1;25815:62:0;;;12103:21:1;12160:2;12140:18;;;12133:30;12199:27;12179:18;;;12172:55;12244:18;;25815:62:0;11919:349:1;25815:62:0;2775:10;25890:32;;;;:18;:32;;;;;;;;-1:-1:-1;;;;;25890:42:0;;;;;;;;;;;;:53;;-1:-1:-1;;25890:53:0;;;;;;;;;;25959:48;;540:41:1;;;25890:42:0;;2775:10;25959:48;;513:18:1;25959:48:0;;;;;;;25720:295;;:::o;26983:328::-;27158:41;2775:10;27191:7;27158:18;:41::i;:::-;27150:103;;;;-1:-1:-1;;;27150:103:0;;;;;;;:::i;:::-;27264:39;27278:4;27284:2;27288:7;27297:5;27264:13;:39::i;:::-;26983:328;;;;:::o;36807:104::-;3953:7;3980:6;-1:-1:-1;;;;;3980:6:0;2775:10;4127:23;4119:68;;;;-1:-1:-1;;;4119:68:0;;;;;;;:::i;:::-;36882:21;;::::1;::::0;:8:::1;::::0;:21:::1;::::0;::::1;::::0;::::1;:::i;36919:362::-:0;28886:4;28910:16;;;:7;:16;;;;;;36984:13;;-1:-1:-1;;;;;28910:16:0;37010:76;;;;-1:-1:-1;;;37010:76:0;;12475:2:1;37010:76:0;;;12457:21:1;12514:2;12494:18;;;12487:30;12553:34;12533:18;;;12526:62;-1:-1:-1;;;12604:18:1;;;12597:45;12659:19;;37010:76:0;12273:411:1;37010:76:0;37125:1;37106:8;37100:22;;;;;:::i;:::-;;;:26;37097:73;;;37150:8;37143:15;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36919:362;;;:::o;37097:73::-;37211:1;37193:7;37187:21;;;;;:::i;:::-;;;:25;:86;;;;;;;;;;;;;;;;;37239:7;37248:18;:7;:16;:18::i;:::-;37222:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;37180:93;36919:362;-1:-1:-1;;36919:362:0:o;38521:255::-;3953:7;3980:6;-1:-1:-1;;;;;3980:6:0;2775:10;4127:23;4119:68;;;;-1:-1:-1;;;4119:68:0;;;;;;;:::i;:::-;38594:6:::1;38603:11;;38617:1;38603:15;;;;:::i;:::-;38594:24;;38590:113;38639:6;38625:11;;:20;;;;:::i;:::-;38620:1;:25;38590:113;;38667:24;38677:10;38689:1;38667:9;:24::i;:::-;38647:3:::0;::::1;::::0;::::1;:::i;:::-;;;;38590:113;;;;38731:6;38713:15;;:24;;;;;;;:::i;:::-;;;;;;;;38762:6;38748:11;;:20;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;;38521:255:0:o;4807:192::-;3953:7;3980:6;-1:-1:-1;;;;;3980:6:0;2775:10;4127:23;4119:68;;;;-1:-1:-1;;;4119:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4896:22:0;::::1;4888:73;;;::::0;-1:-1:-1;;;4888:73:0;;14386:2:1;4888:73:0::1;::::0;::::1;14368:21:1::0;14425:2;14405:18;;;14398:30;14464:34;14444:18;;;14437:62;-1:-1:-1;;;14515:18:1;;;14508:36;14561:19;;4888:73:0::1;14184:402:1::0;4888:73:0::1;4972:19;4982:8;4972:9;:19::i;32803:174::-:0;32878:24;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;32878:29:0;-1:-1:-1;;;;;32878:29:0;;;;;;;;:24;;32932:23;32878:24;32932:14;:23::i;:::-;-1:-1:-1;;;;;32923:46:0;;;;;;;;;;;32803:174;;:::o;29805:110::-;29881:26;29891:2;29895:7;29881:26;;;;;;;;;;;;:9;:26::i;29115:348::-;29208:4;28910:16;;;:7;:16;;;;;;-1:-1:-1;;;;;28910:16:0;29225:73;;;;-1:-1:-1;;;29225:73:0;;14793:2:1;29225:73:0;;;14775:21:1;14832:2;14812:18;;;14805:30;14871:34;14851:18;;;14844:62;-1:-1:-1;;;14922:18:1;;;14915:42;14974:19;;29225:73:0;14591:408:1;29225:73:0;29309:13;29325:23;29340:7;29325:14;:23::i;:::-;29309:39;;29378:5;-1:-1:-1;;;;;29367:16:0;:7;-1:-1:-1;;;;;29367:16:0;;:51;;;;29411:7;-1:-1:-1;;;;;29387:31:0;:20;29399:7;29387:11;:20::i;:::-;-1:-1:-1;;;;;29387:31:0;;29367:51;:87;;;-1:-1:-1;;;;;;26207:25:0;;;26183:4;26207:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;29422:32;29359:96;29115:348;-1:-1:-1;;;;29115:348:0:o;32107:578::-;32266:4;-1:-1:-1;;;;;32239:31:0;:23;32254:7;32239:14;:23::i;:::-;-1:-1:-1;;;;;32239:31:0;;32231:85;;;;-1:-1:-1;;;32231:85:0;;15206:2:1;32231:85:0;;;15188:21:1;15245:2;15225:18;;;15218:30;15284:34;15264:18;;;15257:62;-1:-1:-1;;;15335:18:1;;;15328:39;15384:19;;32231:85:0;15004:405:1;32231:85:0;-1:-1:-1;;;;;32335:16:0;;32327:65;;;;-1:-1:-1;;;32327:65:0;;15616:2:1;32327:65:0;;;15598:21:1;15655:2;15635:18;;;15628:30;15694:34;15674:18;;;15667:62;-1:-1:-1;;;15745:18:1;;;15738:34;15789:19;;32327:65:0;15414:400:1;32327:65:0;32509:29;32526:1;32530:7;32509:8;:29::i;:::-;-1:-1:-1;;;;;32551:15:0;;;;;;:9;:15;;;;;:20;;32570:1;;32551:15;:20;;32570:1;;32551:20;:::i;:::-;;;;-1:-1:-1;;;;;;;32582:13:0;;;;;;:9;:13;;;;;:18;;32599:1;;32582:13;:18;;32599:1;;32582:18;:::i;:::-;;;;-1:-1:-1;;32611:16:0;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;32611:21:0;-1:-1:-1;;;;;32611:21:0;;;;;;;;;32650:27;;32611:16;;32650:27;;;;;;;32107:578;;;:::o;5007:173::-;5063:16;5082:6;;-1:-1:-1;;;;;5099:17:0;;;-1:-1:-1;;;;;;5099:17:0;;;;;;5132:40;;5082:6;;;;;;;5132:40;;5063:16;5132:40;5052:128;5007:173;:::o;28193:315::-;28350:28;28360:4;28366:2;28370:7;28350:9;:28::i;:::-;28397:48;28420:4;28426:2;28430:7;28439:5;28397:22;:48::i;:::-;28389:111;;;;-1:-1:-1;;;28389:111:0;;;;;;;:::i;311:723::-;367:13;588:5;597:1;588:10;584:53;;-1:-1:-1;;615:10:0;;;;;;;;;;;;-1:-1:-1;;;615:10:0;;;;;311:723::o;584:53::-;662:5;647:12;703:78;710:9;;703:78;;736:8;;;;:::i;:::-;;-1:-1:-1;759:10:0;;-1:-1:-1;767:2:0;759:10;;:::i;:::-;;;703:78;;;791:19;823:6;813:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;813:17:0;;791:39;;841:154;848:10;;841:154;;875:11;885:1;875:11;;:::i;:::-;;-1:-1:-1;944:10:0;952:2;944:5;:10;:::i;:::-;931:24;;:2;:24;:::i;:::-;918:39;;901:6;908;901:14;;;;;;;;:::i;:::-;;;;:56;-1:-1:-1;;;;;901:56:0;;;;;;;;-1:-1:-1;972:11:0;981:2;972:11;;:::i;:::-;;;841:154;;30142:321;30272:18;30278:2;30282:7;30272:5;:18::i;:::-;30323:54;30354:1;30358:2;30362:7;30371:5;30323:22;:54::i;:::-;30301:154;;;;-1:-1:-1;;;30301:154:0;;;;;;;:::i;33542:799::-;33697:4;-1:-1:-1;;;;;33718:13:0;;6276:20;6324:8;33714:620;;33754:72;;-1:-1:-1;;;33754:72:0;;-1:-1:-1;;;;;33754:36:0;;;;;:72;;2775:10;;33805:4;;33811:7;;33820:5;;33754:72;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;33754:72:0;;;;;;;;-1:-1:-1;;33754:72:0;;;;;;;;;;;;:::i;:::-;;;33750:529;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33996:6;:13;34013:1;33996:18;33992:272;;34039:60;;-1:-1:-1;;;34039:60:0;;;;;;;:::i;33992:272::-;34214:6;34208:13;34199:6;34195:2;34191:15;34184:38;33750:529;-1:-1:-1;;;;;;33877:51:0;-1:-1:-1;;;33877:51:0;;-1:-1:-1;33870:58:0;;33714:620;-1:-1:-1;34318:4:0;33542:799;;;;;;:::o;30799:382::-;-1:-1:-1;;;;;30879:16:0;;30871:61;;;;-1:-1:-1;;;30871:61:0;;17705:2:1;30871:61:0;;;17687:21:1;;;17724:18;;;17717:30;17783:34;17763:18;;;17756:62;17835:18;;30871:61:0;17503:356:1;30871:61:0;28886:4;28910:16;;;:7;:16;;;;;;-1:-1:-1;;;;;28910:16:0;:30;30943:58;;;;-1:-1:-1;;;30943:58:0;;18066:2:1;30943:58:0;;;18048:21:1;18105:2;18085:18;;;18078:30;18144;18124:18;;;18117:58;18192:18;;30943:58:0;17864:352:1;30943:58:0;-1:-1:-1;;;;;31072:13:0;;;;;;:9;:13;;;;;:18;;31089:1;;31072:13;:18;;31089:1;;31072:18;:::i;:::-;;;;-1:-1:-1;;31101:16:0;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;31101:21:0;-1:-1:-1;;;;;31101:21:0;;;;;;;;31140:33;;31101:16;;;31140:33;;31101:16;;31140:33;30799:382;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:131:1;-1:-1:-1;;;;;;88:32:1;;78:43;;68:71;;135:1;132;125:12;150:245;208:6;261:2;249:9;240:7;236:23;232:32;229:52;;;277:1;274;267:12;229:52;316:9;303:23;335:30;359:5;335:30;:::i;:::-;384:5;150:245;-1:-1:-1;;;150:245:1:o;592:248::-;660:6;668;721:2;709:9;700:7;696:23;692:32;689:52;;;737:1;734;727:12;689:52;-1:-1:-1;;760:23:1;;;830:2;815:18;;;802:32;;-1:-1:-1;592:248:1:o;845:258::-;917:1;927:113;941:6;938:1;935:13;927:113;;;1017:11;;;1011:18;998:11;;;991:39;963:2;956:10;927:113;;;1058:6;1055:1;1052:13;1049:48;;;-1:-1:-1;;1093:1:1;1075:16;;1068:27;845:258::o;1108:269::-;1161:3;1199:5;1193:12;1226:6;1221:3;1214:19;1242:63;1298:6;1291:4;1286:3;1282:14;1275:4;1268:5;1264:16;1242:63;:::i;:::-;1359:2;1338:15;-1:-1:-1;;1334:29:1;1325:39;;;;1366:4;1321:50;;1108:269;-1:-1:-1;;1108:269:1:o;1382:231::-;1531:2;1520:9;1513:21;1494:4;1551:56;1603:2;1592:9;1588:18;1580:6;1551:56;:::i;1618:180::-;1677:6;1730:2;1718:9;1709:7;1705:23;1701:32;1698:52;;;1746:1;1743;1736:12;1698:52;-1:-1:-1;1769:23:1;;1618:180;-1:-1:-1;1618:180:1:o;2011:173::-;2079:20;;-1:-1:-1;;;;;2128:31:1;;2118:42;;2108:70;;2174:1;2171;2164:12;2108:70;2011:173;;;:::o;2189:254::-;2257:6;2265;2318:2;2306:9;2297:7;2293:23;2289:32;2286:52;;;2334:1;2331;2324:12;2286:52;2357:29;2376:9;2357:29;:::i;:::-;2347:39;2433:2;2418:18;;;;2405:32;;-1:-1:-1;;;2189:254:1:o;2630:186::-;2689:6;2742:2;2730:9;2721:7;2717:23;2713:32;2710:52;;;2758:1;2755;2748:12;2710:52;2781:29;2800:9;2781:29;:::i;2821:328::-;2898:6;2906;2914;2967:2;2955:9;2946:7;2942:23;2938:32;2935:52;;;2983:1;2980;2973:12;2935:52;3006:29;3025:9;3006:29;:::i;:::-;2996:39;;3054:38;3088:2;3077:9;3073:18;3054:38;:::i;:::-;3044:48;;3139:2;3128:9;3124:18;3111:32;3101:42;;2821:328;;;;;:::o;3154:127::-;3215:10;3210:3;3206:20;3203:1;3196:31;3246:4;3243:1;3236:15;3270:4;3267:1;3260:15;3286:632;3351:5;3381:18;3422:2;3414:6;3411:14;3408:40;;;3428:18;;:::i;:::-;3503:2;3497:9;3471:2;3557:15;;-1:-1:-1;;3553:24:1;;;3579:2;3549:33;3545:42;3533:55;;;3603:18;;;3623:22;;;3600:46;3597:72;;;3649:18;;:::i;:::-;3689:10;3685:2;3678:22;3718:6;3709:15;;3748:6;3740;3733:22;3788:3;3779:6;3774:3;3770:16;3767:25;3764:45;;;3805:1;3802;3795:12;3764:45;3855:6;3850:3;3843:4;3835:6;3831:17;3818:44;3910:1;3903:4;3894:6;3886;3882:19;3878:30;3871:41;;;;3286:632;;;;;:::o;3923:451::-;3992:6;4045:2;4033:9;4024:7;4020:23;4016:32;4013:52;;;4061:1;4058;4051:12;4013:52;4101:9;4088:23;4134:18;4126:6;4123:30;4120:50;;;4166:1;4163;4156:12;4120:50;4189:22;;4242:4;4234:13;;4230:27;-1:-1:-1;4220:55:1;;4271:1;4268;4261:12;4220:55;4294:74;4360:7;4355:2;4342:16;4337:2;4333;4329:11;4294:74;:::i;4603:347::-;4668:6;4676;4729:2;4717:9;4708:7;4704:23;4700:32;4697:52;;;4745:1;4742;4735:12;4697:52;4768:29;4787:9;4768:29;:::i;:::-;4758:39;;4847:2;4836:9;4832:18;4819:32;4894:5;4887:13;4880:21;4873:5;4870:32;4860:60;;4916:1;4913;4906:12;4860:60;4939:5;4929:15;;;4603:347;;;;;:::o;4955:667::-;5050:6;5058;5066;5074;5127:3;5115:9;5106:7;5102:23;5098:33;5095:53;;;5144:1;5141;5134:12;5095:53;5167:29;5186:9;5167:29;:::i;:::-;5157:39;;5215:38;5249:2;5238:9;5234:18;5215:38;:::i;:::-;5205:48;;5300:2;5289:9;5285:18;5272:32;5262:42;;5355:2;5344:9;5340:18;5327:32;5382:18;5374:6;5371:30;5368:50;;;5414:1;5411;5404:12;5368:50;5437:22;;5490:4;5482:13;;5478:27;-1:-1:-1;5468:55:1;;5519:1;5516;5509:12;5468:55;5542:74;5608:7;5603:2;5590:16;5585:2;5581;5577:11;5542:74;:::i;:::-;5532:84;;;4955:667;;;;;;;:::o;5627:260::-;5695:6;5703;5756:2;5744:9;5735:7;5731:23;5727:32;5724:52;;;5772:1;5769;5762:12;5724:52;5795:29;5814:9;5795:29;:::i;:::-;5785:39;;5843:38;5877:2;5866:9;5862:18;5843:38;:::i;:::-;5833:48;;5627:260;;;;;:::o;5892:356::-;6094:2;6076:21;;;6113:18;;;6106:30;6172:34;6167:2;6152:18;;6145:62;6239:2;6224:18;;5892:356::o;6253:380::-;6332:1;6328:12;;;;6375;;;6396:61;;6450:4;6442:6;6438:17;6428:27;;6396:61;6503:2;6495:6;6492:14;6472:18;6469:38;6466:161;;6549:10;6544:3;6540:20;6537:1;6530:31;6584:4;6581:1;6574:15;6612:4;6609:1;6602:15;6466:161;;6253:380;;;:::o;8575:127::-;8636:10;8631:3;8627:20;8624:1;8617:31;8667:4;8664:1;8657:15;8691:4;8688:1;8681:15;8707:128;8747:3;8778:1;8774:6;8771:1;8768:13;8765:39;;;8784:18;;:::i;:::-;-1:-1:-1;8820:9:1;;8707:128::o;9526:136::-;9565:3;9593:5;9583:39;;9602:18;;:::i;:::-;-1:-1:-1;;;9638:18:1;;9526:136::o;9667:135::-;9706:3;9727:17;;;9724:43;;9747:18;;:::i;:::-;-1:-1:-1;9794:1:1;9783:13;;9667:135::o;10377:168::-;10417:7;10483:1;10479;10475:6;10471:14;10468:1;10465:21;10460:1;10453:9;10446:17;10442:45;10439:71;;;10490:18;;:::i;:::-;-1:-1:-1;10530:9:1;;10377:168::o;10550:125::-;10590:4;10618:1;10615;10612:8;10609:34;;;10623:18;;:::i;:::-;-1:-1:-1;10660:9:1;;10550:125::o;10680:413::-;10882:2;10864:21;;;10921:2;10901:18;;;10894:30;10960:34;10955:2;10940:18;;10933:62;-1:-1:-1;;;11026:2:1;11011:18;;11004:47;11083:3;11068:19;;10680:413::o;12815:185::-;12857:3;12895:5;12889:12;12910:52;12955:6;12950:3;12943:4;12936:5;12932:16;12910:52;:::i;:::-;12978:16;;;;;12815:185;-1:-1:-1;;12815:185:1:o;13005:1174::-;13181:3;13210:1;13243:6;13237:13;13273:3;13295:1;13323:9;13319:2;13315:18;13305:28;;13383:2;13372:9;13368:18;13405;13395:61;;13449:4;13441:6;13437:17;13427:27;;13395:61;13475:2;13523;13515:6;13512:14;13492:18;13489:38;13486:165;;-1:-1:-1;;;13550:33:1;;13606:4;13603:1;13596:15;13636:4;13557:3;13624:17;13486:165;13667:18;13694:104;;;;13812:1;13807:320;;;;13660:467;;13694:104;-1:-1:-1;;13727:24:1;;13715:37;;13772:16;;;;-1:-1:-1;13694:104:1;;13807:320;12762:1;12755:14;;;12799:4;12786:18;;13902:1;13916:165;13930:6;13927:1;13924:13;13916:165;;;14008:14;;13995:11;;;13988:35;14051:16;;;;13945:10;;13916:165;;;13920:3;;14110:6;14105:3;14101:16;14094:23;;13660:467;;;;;;;14143:30;14169:3;14161:6;14143:30;:::i;:::-;14136:37;13005:1174;-1:-1:-1;;;;;13005:1174:1:o;15819:414::-;16021:2;16003:21;;;16060:2;16040:18;;;16033:30;16099:34;16094:2;16079:18;;16072:62;-1:-1:-1;;;16165:2:1;16150:18;;16143:48;16223:3;16208:19;;15819:414::o;16238:127::-;16299:10;16294:3;16290:20;16287:1;16280:31;16330:4;16327:1;16320:15;16354:4;16351:1;16344:15;16370:120;16410:1;16436;16426:35;;16441:18;;:::i;:::-;-1:-1:-1;16475:9:1;;16370:120::o;16495:112::-;16527:1;16553;16543:35;;16558:18;;:::i;:::-;-1:-1:-1;16592:9:1;;16495:112::o;16612:127::-;16673:10;16668:3;16664:20;16661:1;16654:31;16704:4;16701:1;16694:15;16728:4;16725:1;16718:15;16744:500;-1:-1:-1;;;;;17013:15:1;;;16995:34;;17065:15;;17060:2;17045:18;;17038:43;17112:2;17097:18;;17090:34;;;17160:3;17155:2;17140:18;;17133:31;;;16938:4;;17181:57;;17218:19;;17210:6;17181:57;:::i;:::-;17173:65;16744:500;-1:-1:-1;;;;;;16744:500:1:o;17249:249::-;17318:6;17371:2;17359:9;17350:7;17346:23;17342:32;17339:52;;;17387:1;17384;17377:12;17339:52;17419:9;17413:16;17438:30;17462:5;17438:30;:::i
Swarm Source
ipfs://09dc95e43085605cfb02492e7713e3c47e28226a2b058824282b39b2a3af97c9
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.