ERC-721
Overview
Max Total Supply
158 WBE
Holders
28
Market
Volume (24H)
N/A
Min Price (24H)
N/A
Max Price (24H)
N/A
Other Info
Token Contract
Balance
7 WBELoading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
BEMETA_WomansBigEyes
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-04-17 */ // File: @openzeppelin/contracts/utils/Strings.sol // OpenZeppelin Contracts v4.4.1 (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 // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // File: @openzeppelin/contracts/access/Ownable.sol // OpenZeppelin Contracts v4.4.1 (access/Ownable.sol) pragma solidity ^0.8.0; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev 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 { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File: @openzeppelin/contracts/utils/Address.sol // OpenZeppelin Contracts v4.4.1 (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 // OpenZeppelin Contracts v4.4.1 (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 // OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC165 standard, as defined in the * https://eips.ethereum.org/EIPS/eip-165[EIP]. * * Implementers can declare support of contract interfaces, which can then be * queried by others ({ERC165Checker}). * * For an implementation, see {ERC165}. */ interface IERC165 { /** * @dev Returns true if this contract implements the interface defined by * `interfaceId`. See the corresponding * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] * to learn more about how these ids are created. * * This function call must use less than 30 000 gas. */ function supportsInterface(bytes4 interfaceId) external view returns (bool); } // File: @openzeppelin/contracts/utils/introspection/ERC165.sol // OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol) pragma solidity ^0.8.0; /** * @dev Implementation of the {IERC165} interface. * * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check * for the additional interface id that will be supported. For example: * * ```solidity * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); * } * ``` * * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation. */ abstract contract ERC165 is IERC165 { /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IERC165).interfaceId; } } // File: @openzeppelin/contracts/token/ERC721/IERC721.sol // OpenZeppelin Contracts v4.4.1 (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/IERC721Enumerable.sol // OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Enumerable.sol) pragma solidity ^0.8.0; /** * @title ERC-721 Non-Fungible Token Standard, optional enumeration extension * @dev See https://eips.ethereum.org/EIPS/eip-721 */ interface IERC721Enumerable is IERC721 { /** * @dev Returns the total amount of tokens stored by the contract. */ function totalSupply() external view returns (uint256); /** * @dev Returns a token ID owned by `owner` at a given `index` of its token list. * Use along with {balanceOf} to enumerate all of ``owner``'s tokens. */ function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256 tokenId); /** * @dev Returns a token ID at a given `index` of all the tokens stored by the contract. * Use along with {totalSupply} to enumerate all tokens. */ function tokenByIndex(uint256 index) external view returns (uint256); } // File: @openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol // OpenZeppelin Contracts v4.4.1 (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 // OpenZeppelin Contracts v4.4.1 (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 { _setApprovalForAll(_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 Approve `operator` to operate on all of `owner` tokens * * Emits a {ApprovalForAll} event. */ function _setApprovalForAll( address owner, address operator, bool approved ) internal virtual { require(owner != operator, "ERC721: approve to caller"); _operatorApprovals[owner][operator] = approved; emit ApprovalForAll(owner, operator, approved); } /** * @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: @openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol // OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/ERC721Enumerable.sol) pragma solidity ^0.8.0; /** * @dev This implements an optional extension of {ERC721} defined in the EIP that adds * enumerability of all the token ids in the contract as well as all token ids owned by each * account. */ abstract contract ERC721Enumerable is ERC721, IERC721Enumerable { // Mapping from owner to list of owned token IDs mapping(address => mapping(uint256 => uint256)) private _ownedTokens; // Mapping from token ID to index of the owner tokens list mapping(uint256 => uint256) private _ownedTokensIndex; // Array with all token ids, used for enumeration uint256[] private _allTokens; // Mapping from token id to position in the allTokens array mapping(uint256 => uint256) private _allTokensIndex; /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override(IERC165, ERC721) returns (bool) { return interfaceId == type(IERC721Enumerable).interfaceId || super.supportsInterface(interfaceId); } /** * @dev See {IERC721Enumerable-tokenOfOwnerByIndex}. */ function tokenOfOwnerByIndex(address owner, uint256 index) public view virtual override returns (uint256) { require(index < ERC721.balanceOf(owner), "ERC721Enumerable: owner index out of bounds"); return _ownedTokens[owner][index]; } /** * @dev See {IERC721Enumerable-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _allTokens.length; } /** * @dev See {IERC721Enumerable-tokenByIndex}. */ function tokenByIndex(uint256 index) public view virtual override returns (uint256) { require(index < ERC721Enumerable.totalSupply(), "ERC721Enumerable: global index out of bounds"); return _allTokens[index]; } /** * @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` cannot be the zero address. * - `to` cannot be the zero address. * * 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 override { super._beforeTokenTransfer(from, to, tokenId); if (from == address(0)) { _addTokenToAllTokensEnumeration(tokenId); } else if (from != to) { _removeTokenFromOwnerEnumeration(from, tokenId); } if (to == address(0)) { _removeTokenFromAllTokensEnumeration(tokenId); } else if (to != from) { _addTokenToOwnerEnumeration(to, tokenId); } } /** * @dev Private function to add a token to this extension's ownership-tracking data structures. * @param to address representing the new owner of the given token ID * @param tokenId uint256 ID of the token to be added to the tokens list of the given address */ function _addTokenToOwnerEnumeration(address to, uint256 tokenId) private { uint256 length = ERC721.balanceOf(to); _ownedTokens[to][length] = tokenId; _ownedTokensIndex[tokenId] = length; } /** * @dev Private function to add a token to this extension's token tracking data structures. * @param tokenId uint256 ID of the token to be added to the tokens list */ function _addTokenToAllTokensEnumeration(uint256 tokenId) private { _allTokensIndex[tokenId] = _allTokens.length; _allTokens.push(tokenId); } /** * @dev Private function to remove a token from this extension's ownership-tracking data structures. Note that * while the token is not assigned a new owner, the `_ownedTokensIndex` mapping is _not_ updated: this allows for * gas optimizations e.g. when performing a transfer operation (avoiding double writes). * This has O(1) time complexity, but alters the order of the _ownedTokens array. * @param from address representing the previous owner of the given token ID * @param tokenId uint256 ID of the token to be removed from the tokens list of the given address */ function _removeTokenFromOwnerEnumeration(address from, uint256 tokenId) private { // To prevent a gap in from's tokens array, we store the last token in the index of the token to delete, and // then delete the last slot (swap and pop). uint256 lastTokenIndex = ERC721.balanceOf(from) - 1; uint256 tokenIndex = _ownedTokensIndex[tokenId]; // When the token to delete is the last token, the swap operation is unnecessary if (tokenIndex != lastTokenIndex) { uint256 lastTokenId = _ownedTokens[from][lastTokenIndex]; _ownedTokens[from][tokenIndex] = lastTokenId; // Move the last token to the slot of the to-delete token _ownedTokensIndex[lastTokenId] = tokenIndex; // Update the moved token's index } // This also deletes the contents at the last position of the array delete _ownedTokensIndex[tokenId]; delete _ownedTokens[from][lastTokenIndex]; } /** * @dev Private function to remove a token from this extension's token tracking data structures. * This has O(1) time complexity, but alters the order of the _allTokens array. * @param tokenId uint256 ID of the token to be removed from the tokens list */ function _removeTokenFromAllTokensEnumeration(uint256 tokenId) private { // To prevent a gap in the tokens array, we store the last token in the index of the token to delete, and // then delete the last slot (swap and pop). uint256 lastTokenIndex = _allTokens.length - 1; uint256 tokenIndex = _allTokensIndex[tokenId]; // When the token to delete is the last token, the swap operation is unnecessary. However, since this occurs so // rarely (when the last minted token is burnt) that we still do the swap here to avoid the gas cost of adding // an 'if' statement (like in _removeTokenFromOwnerEnumeration) uint256 lastTokenId = _allTokens[lastTokenIndex]; _allTokens[tokenIndex] = lastTokenId; // Move the last token to the slot of the to-delete token _allTokensIndex[lastTokenId] = tokenIndex; // Update the moved token's index // This also deletes the contents at the last position of the array delete _allTokensIndex[tokenId]; _allTokens.pop(); } } //SPDX-License-Identifier: MIT pragma solidity >=0.7.0 <0.9.0; contract BEMETA_WomansBigEyes is ERC721, ERC721Enumerable, Ownable { using Strings for uint256; string public baseURI = "https://ipfs.io/ipfs/QmTL7ZL39w6cP8zu1cMYxTfJFDXwg4WdQtEj4Yd1YWVBBe"; string public baseExtension = ".json"; uint256 public bonusPrice = 0.025 ether; uint256 public holdersPrice = 0.035 ether; uint256 public weekendPrice = 0.04 ether; uint256 public regularPrice = 0.05 ether; uint256 public maxSupply = 10000; uint256 public maxMintAmount = 5; uint256 public bonusSaleDate = 1650643200; // 22 April 2022 16:00:00 GMT uint256 public regularSaleDate = 1650902400; // 25 April 2022 16:00:00 GMT bool public paused = false; address public bemmhAddress = 0x2D78c5aC66eCBcaF81aD13060B53a399Bc78D6aa; address public pdartAddress = 0xd287623e852d010DD6df714D90bB4f53103355bB; address public bemftAddress = 0x5dF17fAaA379058B2f4dCa0a3067531785f26d22; mapping(address => uint8) private wl_mint_amount; mapping(address => uint256) private addressMintedBalance; constructor() ERC721("WomansBigEyes", "WBE") {} function _baseURI() internal view virtual override returns (string memory) {return baseURI;} function holdersCost() public view returns (uint256) {if (regularSaleDate < block.timestamp) {return holdersPrice;} else {return bonusPrice;}} function regularCost() public view returns (uint256) {if (regularSaleDate < block.timestamp) {return regularPrice;} else {return weekendPrice;}} function stageOfMinting() public view returns (uint256) // 1 is Bonus Sales period, 2 is Regular Sales {if (regularSaleDate < block.timestamp) {return 2;} else {return 1;}} function numAvailableToMint(address addr) external view returns (uint8) {return wl_mint_amount[addr];} function mint(uint256 _mintAmount) public payable { require(!paused, "The contract is paused"); require(bonusSaleDate < block.timestamp, "Minting is not started"); uint256 supply = totalSupply(); require(_mintAmount > 0, "At least 1 NFT must be minted"); require(supply + _mintAmount <= maxSupply, "Max NFT limit exceeded"); if (msg.sender != owner()) { if(stageOfMinting() == 1) { IERC721 bemmh_token = IERC721(bemmhAddress); IERC721 pdart_token = IERC721(pdartAddress); IERC721 bemft_token = IERC721(bemftAddress); uint256 ownerWLCount = wl_mint_amount[msg.sender]; uint256 owned_bemmh_Amount = bemmh_token.balanceOf(msg.sender); uint256 owned_pdart_Amount = pdart_token.balanceOf(msg.sender); uint256 owned_bemft_Amount = bemft_token.balanceOf(msg.sender); if(ownerWLCount + owned_bemmh_Amount + owned_pdart_Amount + owned_bemft_Amount >= 1) { uint256 owned_nfts_count = 0; if(owned_bemmh_Amount + owned_pdart_Amount + owned_bemft_Amount > 0) { owned_nfts_count = 20;} //BEMETA NFTs holders - 20 bonus mint per holder on bonus weekend uint256 allowWLmintamount = ownerWLCount + owned_nfts_count; uint256 ownerMintedCount = addressMintedBalance[msg.sender]; require(_mintAmount <= maxMintAmount, "Max mint amount per session exceeded"); require(msg.value >= bonusPrice * _mintAmount, "Insufficient funds"); if(ownerMintedCount + _mintAmount <= allowWLmintamount) { require(msg.value < weekendPrice * _mintAmount, "Insufficient funds"); for (uint256 i = 1; i <= _mintAmount; i++) { addressMintedBalance[msg.sender]++; _safeMint(msg.sender, supply + i);} } else { require(ownerMintedCount == allowWLmintamount, "Max bonus mint amount per session not exceeded"); require(ownerMintedCount + _mintAmount > allowWLmintamount, "Max bonus mint amount per session not exceeded"); require(_mintAmount <= maxMintAmount, "Max mint amount per session exceeded"); require(msg.value >= weekendPrice * _mintAmount, "First mint at special price, please"); for (uint256 i = 1; i <= _mintAmount; i++) { _safeMint(msg.sender, supply + i);} } } else { require(_mintAmount <= maxMintAmount, "Max mint amount per session exceeded"); require(msg.value >= weekendPrice * _mintAmount, "Insufficient funds"); for (uint256 i = 1; i <= _mintAmount; i++) { _safeMint(msg.sender, supply + i);} } } else { IERC721 bemmh_token = IERC721(bemmhAddress); IERC721 pdart_token = IERC721(pdartAddress); IERC721 bemft_token = IERC721(bemftAddress); uint256 owned_bemmh_Amount = bemmh_token.balanceOf(msg.sender); uint256 owned_pdart_Amount = pdart_token.balanceOf(msg.sender); uint256 owned_bemft_Amount = bemft_token.balanceOf(msg.sender); if(owned_bemmh_Amount + owned_pdart_Amount + owned_bemft_Amount >= 1) //BEMETA NFTs holders - all time mint with special price for holder { require(_mintAmount <= maxMintAmount, "Max mint amount per session exceeded"); require(msg.value >= holdersPrice * _mintAmount, "Insufficient funds"); require(msg.value < regularPrice * _mintAmount, "First mint at special price, please"); for (uint256 i = 1; i <= _mintAmount; i++) { _safeMint(msg.sender, supply + i);} } else { require(_mintAmount <= maxMintAmount, "Max mint amount per session exceeded"); require(msg.value >= regularPrice * _mintAmount, "Insufficient funds"); for (uint256 i = 1; i <= _mintAmount; i++) { _safeMint(msg.sender, supply + i);} } } } else { for (uint256 i = 1; i <= _mintAmount; i++) { _safeMint(msg.sender, supply + i); } } } function alreadyMintedBonus() public view returns (uint256) {uint256 aCount = addressMintedBalance[msg.sender];return (aCount);} function _beforeTokenTransfer(address from, address to, uint256 tokenId) internal override(ERC721, ERC721Enumerable) {super._beforeTokenTransfer(from, to, tokenId);} function supportsInterface(bytes4 interfaceId) public view virtual override(ERC721, ERC721Enumerable) returns (bool) {return super.supportsInterface(interfaceId);} function walletOfOwner(address owner) public view returns (uint256[] memory) {uint256 ownerTokenCount = balanceOf(owner); uint256[] memory tokenIds = new uint256[](ownerTokenCount); for (uint256 i; i < ownerTokenCount; i++) { tokenIds[i] = tokenOfOwnerByIndex(owner, i);} return tokenIds;} function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {require(_exists(tokenId), "ERC721Metadata: URI query for nonexistent token"); string memory currentBaseURI = _baseURI(); return bytes(currentBaseURI).length > 0 ? string(abi.encodePacked(currentBaseURI, tokenId.toString(), baseExtension)) : "";} function info() public view returns (uint256, uint256, uint256, uint256, uint256, uint256, uint256, uint256, uint256) { return (stageOfMinting(), holdersCost(), regularCost(), bonusSaleDate, regularSaleDate, bonusPrice, weekendPrice, holdersPrice, regularPrice);} //only owner function whitelistUsers(address[] calldata addresses, uint8 numAllowedToMint) public onlyOwner { for (uint256 i = 0; i < addresses.length; i++) {wl_mint_amount[addresses[i]] = numAllowedToMint;} } function setBonusPrice(uint256 _newBonusPrice) public onlyOwner {bonusPrice = _newBonusPrice;} function setWeekendPrice(uint256 _newWeekendPrice) public onlyOwner {weekendPrice = _newWeekendPrice;} function setHoldersPrice(uint256 _newHoldersPrice) public onlyOwner {holdersPrice = _newHoldersPrice;} function setRegularPrice(uint256 _newRegularPrice) public onlyOwner {regularPrice = _newRegularPrice;} function setBonusSaleDate(uint256 _newBonusSaleDate) public onlyOwner {bonusSaleDate = _newBonusSaleDate;} function setRegularSaleDate(uint256 _newRegularSaleDate) public onlyOwner {regularSaleDate = _newRegularSaleDate;} function setmaxMintAmount(uint256 _newmaxMintAmount) public onlyOwner {maxMintAmount = _newmaxMintAmount;} function setBaseURI(string memory _newBaseURI) public onlyOwner {baseURI = _newBaseURI;} function setBaseExtension(string memory _newBaseExtension) public onlyOwner {baseExtension = _newBaseExtension;} function setMaxSupply(uint256 _newMaxSupply) public onlyOwner {maxSupply = _newMaxSupply;} function pause(bool _state) public onlyOwner {paused = _state;} function withdraw() public payable onlyOwner {(bool wo, ) = payable(0x984B4418ad10D5844e8927C8197540514033FfF7).call{value: address(this).balance * 50 / 100}(""); require(wo); (bool wt, ) = payable(0xFAf57c09291C289583216A02864a9C291e48E052).call{value: address(this).balance * 50 / 100}(""); require(wt); (bool os, ) = payable(owner()).call{value: address(this).balance}(""); require(os);} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":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":[],"name":"alreadyMintedBonus","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseExtension","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bemftAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bemmhAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bonusPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bonusSaleDate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"holdersCost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"holdersPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"info","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"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":"maxMintAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_mintAmount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"numAvailableToMint","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"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":[{"internalType":"bool","name":"_state","type":"bool"}],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pdartAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"regularCost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"regularPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"regularSaleDate","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":"_newBaseExtension","type":"string"}],"name":"setBaseExtension","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_newBaseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newBonusPrice","type":"uint256"}],"name":"setBonusPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newBonusSaleDate","type":"uint256"}],"name":"setBonusSaleDate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newHoldersPrice","type":"uint256"}],"name":"setHoldersPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newMaxSupply","type":"uint256"}],"name":"setMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newRegularPrice","type":"uint256"}],"name":"setRegularPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newRegularSaleDate","type":"uint256"}],"name":"setRegularSaleDate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newWeekendPrice","type":"uint256"}],"name":"setWeekendPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newmaxMintAmount","type":"uint256"}],"name":"setmaxMintAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stageOfMinting","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"walletOfOwner","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"weekendPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint8","name":"numAllowedToMint","type":"uint8"}],"name":"whitelistUsers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"payable","type":"function"}]
Contract Creation Code
61010060405260436080818152906200368e60a03980516200002a91600b91602090910190620001ff565b5060408051808201909152600580825264173539b7b760d91b60209092019182526200005991600c91620001ff565b506658d15e17628000600d55667c585087238000600e55668e1bc9bf040000600f5566b1a2bc2ec500006010556127106011556005601255636262d100601355636266c58060145560158054742d78c5ac66ecbcaf81ad13060b53a399bc78d6aa006001600160a81b0319909116179055601680546001600160a01b031990811673d287623e852d010dd6df714d90bb4f53103355bb1790915560178054909116735df17faaa379058b2f4dca0a3067531785f26d221790553480156200011f57600080fd5b50604080518082018252600d81526c576f6d616e734269674579657360981b60208083019182528351808501909452600384526257424560e81b9084015281519192916200017091600091620001ff565b50805162000186906001906020840190620001ff565b505050620001a36200019d620001a960201b60201c565b620001ad565b620002e2565b3390565b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b8280546200020d90620002a5565b90600052602060002090601f0160209004810192826200023157600085556200027c565b82601f106200024c57805160ff19168380011785556200027c565b828001600101855582156200027c579182015b828111156200027c5782518255916020019190600101906200025f565b506200028a9291506200028e565b5090565b5b808211156200028a57600081556001016200028f565b600181811c90821680620002ba57607f821691505b60208210811415620002dc57634e487b7160e01b600052602260045260246000fd5b50919050565b61339c80620002f26000396000f3fe6080604052600436106103345760003560e01c806368cccfb5116101ab578063aabb75d0116100f7578063cf588d8a11610095578063e985e9c51161006f578063e985e9c514610966578063ea798c6d146109af578063f2fde38b146109c4578063fdab4d5e146109e457600080fd5b8063cf588d8a14610910578063d5abeb0114610930578063da3ef23f1461094657600080fd5b8063c04a2836116100d1578063c04a283614610870578063c20c0a0a146108bb578063c6682862146108db578063c87b56dd146108f057600080fd5b8063aabb75d014610810578063b88d4fde14610830578063bc8eaf2a1461085057600080fd5b80638da5cb5b11610164578063a0712d681161013e578063a0712d6814610796578063a1c4acb3146107a9578063a22cb465146107cb578063a349447f146107eb57600080fd5b80638da5cb5b1461074e57806395d89b411461076c5780639b536ba21461078157600080fd5b806368cccfb5146106ae5780636c0360eb146106c45780636f8b44b0146106d957806370a08231146106f9578063715018a6146107195780637f00c7a61461072e57600080fd5b8063370158ea1161028557806347b3442b116102235780635c975abb116101fd5780635c975abb1461063e5780635fa97cef146106585780636352211e1461067857806365cf3a481461069857600080fd5b806347b3442b146105e85780634f6ccce7146105fe57806355f804b31461061e57600080fd5b80633d97a41f1161025f5780633d97a41f1461057057806342842e0e14610586578063438b6300146105a657806343b34142146105d357600080fd5b8063370158ea146104f95780633ccfd60b146105525780633d3b94c21461055a57600080fd5b806315359375116102f2578063239c70ae116102cc578063239c70ae1461048357806323b872dd146104995780632f4db712146104b95780632f745c59146104d957600080fd5b8063153593751461042a57806318160ddd1461044e5780631cc4594e1461046357600080fd5b8062ebf2e01461033957806301ffc9a71461035b57806302329a291461039057806306fdde03146103b0578063081812fc146103d2578063095ea7b31461040a575b600080fd5b34801561034557600080fd5b50610359610354366004612e5b565b610a04565b005b34801561036757600080fd5b5061037b610376366004612dd8565b610a3c565b60405190151581526020015b60405180910390f35b34801561039c57600080fd5b506103596103ab366004612dbd565b610a4d565b3480156103bc57600080fd5b506103c5610a8a565b6040516103879190612ffe565b3480156103de57600080fd5b506103f26103ed366004612e5b565b610b1c565b6040516001600160a01b039091168152602001610387565b34801561041657600080fd5b50610359610425366004612d07565b610bb1565b34801561043657600080fd5b50610440600f5481565b604051908152602001610387565b34801561045a57600080fd5b50600854610440565b34801561046f57600080fd5b5061035961047e366004612e5b565b610cc7565b34801561048f57600080fd5b5061044060125481565b3480156104a557600080fd5b506103596104b4366004612c25565b610cf6565b3480156104c557600080fd5b506017546103f2906001600160a01b031681565b3480156104e557600080fd5b506104406104f4366004612d07565b610d27565b34801561050557600080fd5b5061050e610dbd565b60408051998a5260208a0198909852968801959095526060870193909352608086019190915260a085015260c084015260e083015261010082015261012001610387565b610359610e12565b34801561056657600080fd5b50610440600e5481565b34801561057c57600080fd5b5061044060145481565b34801561059257600080fd5b506103596105a1366004612c25565b610fa7565b3480156105b257600080fd5b506105c66105c1366004612bd7565b610fc2565b6040516103879190612fba565b3480156105df57600080fd5b50610440611064565b3480156105f457600080fd5b5061044060135481565b34801561060a57600080fd5b50610440610619366004612e5b565b61107c565b34801561062a57600080fd5b50610359610639366004612e12565b61110f565b34801561064a57600080fd5b5060155461037b9060ff1681565b34801561066457600080fd5b506016546103f2906001600160a01b031681565b34801561068457600080fd5b506103f2610693366004612e5b565b611150565b3480156106a457600080fd5b50610440600d5481565b3480156106ba57600080fd5b5061044060105481565b3480156106d057600080fd5b506103c56111c7565b3480156106e557600080fd5b506103596106f4366004612e5b565b611255565b34801561070557600080fd5b50610440610714366004612bd7565b611284565b34801561072557600080fd5b5061035961130b565b34801561073a57600080fd5b50610359610749366004612e5b565b611341565b34801561075a57600080fd5b50600a546001600160a01b03166103f2565b34801561077857600080fd5b506103c5611370565b34801561078d57600080fd5b5061044061137f565b6103596107a4366004612e5b565b611399565b3480156107b557600080fd5b5033600090815260196020526040902054610440565b3480156107d757600080fd5b506103596107e6366004612cdd565b611c41565b3480156107f757600080fd5b506015546103f29061010090046001600160a01b031681565b34801561081c57600080fd5b5061035961082b366004612d31565b611c4c565b34801561083c57600080fd5b5061035961084b366004612c61565b611cf0565b34801561085c57600080fd5b5061035961086b366004612e5b565b611d22565b34801561087c57600080fd5b506108a961088b366004612bd7565b6001600160a01b031660009081526018602052604090205460ff1690565b60405160ff9091168152602001610387565b3480156108c757600080fd5b506103596108d6366004612e5b565b611d51565b3480156108e757600080fd5b506103c5611d80565b3480156108fc57600080fd5b506103c561090b366004612e5b565b611d8d565b34801561091c57600080fd5b5061035961092b366004612e5b565b611e6b565b34801561093c57600080fd5b5061044060115481565b34801561095257600080fd5b50610359610961366004612e12565b611e9a565b34801561097257600080fd5b5061037b610981366004612bf2565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b3480156109bb57600080fd5b50610440611ed7565b3480156109d057600080fd5b506103596109df366004612bd7565b611ef1565b3480156109f057600080fd5b506103596109ff366004612e5b565b611f8c565b600a546001600160a01b03163314610a375760405162461bcd60e51b8152600401610a2e90613121565b60405180910390fd5b601355565b6000610a4782611fbb565b92915050565b600a546001600160a01b03163314610a775760405162461bcd60e51b8152600401610a2e90613121565b6015805460ff1916911515919091179055565b606060008054610a9990613278565b80601f0160208091040260200160405190810160405280929190818152602001828054610ac590613278565b8015610b125780601f10610ae757610100808354040283529160200191610b12565b820191906000526020600020905b815481529060010190602001808311610af557829003601f168201915b5050505050905090565b6000818152600260205260408120546001600160a01b0316610b955760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610a2e565b506000908152600460205260409020546001600160a01b031690565b6000610bbc82611150565b9050806001600160a01b0316836001600160a01b03161415610c2a5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610a2e565b336001600160a01b0382161480610c465750610c468133610981565b610cb85760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610a2e565b610cc28383611fe0565b505050565b600a546001600160a01b03163314610cf15760405162461bcd60e51b8152600401610a2e90613121565b600d55565b610d00338261204e565b610d1c5760405162461bcd60e51b8152600401610a2e90613156565b610cc2838383612145565b6000610d3283611284565b8210610d945760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b6064820152608401610a2e565b506001600160a01b03919091166000908152600660209081526040808320938352929052205490565b6000806000806000806000806000610dd3611064565b610ddb61137f565b610de3611ed7565b601354601454600d54600f54600e54601054985098509850985098509850985098509850909192939495969798565b600a546001600160a01b03163314610e3c5760405162461bcd60e51b8152600401610a2e90613121565b600073984b4418ad10d5844e8927c8197540514033fff76064610e60476032613216565b610e6a9190613202565b604051600081818185875af1925050503d8060008114610ea6576040519150601f19603f3d011682016040523d82523d6000602084013e610eab565b606091505b5050905080610eb957600080fd5b600073faf57c09291c289583216a02864a9c291e48e0526064610edd476032613216565b610ee79190613202565b604051600081818185875af1925050503d8060008114610f23576040519150601f19603f3d011682016040523d82523d6000602084013e610f28565b606091505b5050905080610f3657600080fd5b6000610f4a600a546001600160a01b031690565b6001600160a01b03164760405160006040518083038185875af1925050503d8060008114610f94576040519150601f19603f3d011682016040523d82523d6000602084013e610f99565b606091505b5050905080610cc257600080fd5b610cc283838360405180602001604052806000815250611cf0565b60606000610fcf83611284565b905060008167ffffffffffffffff811115610fec57610fec61333a565b604051908082528060200260200182016040528015611015578160200160208202803683370190505b50905060005b8281101561105c5761102d8582610d27565b82828151811061103f5761103f613324565b602090810291909101015280611054816132b3565b91505061101b565b509392505050565b60004260145410156110765750600290565b50600190565b600061108760085490565b82106110ea5760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b6064820152608401610a2e565b600882815481106110fd576110fd613324565b90600052602060002001549050919050565b600a546001600160a01b031633146111395760405162461bcd60e51b8152600401610a2e90613121565b805161114c90600b906020840190612a9c565b5050565b6000818152600260205260408120546001600160a01b031680610a475760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b6064820152608401610a2e565b600b80546111d490613278565b80601f016020809104026020016040519081016040528092919081815260200182805461120090613278565b801561124d5780601f106112225761010080835404028352916020019161124d565b820191906000526020600020905b81548152906001019060200180831161123057829003601f168201915b505050505081565b600a546001600160a01b0316331461127f5760405162461bcd60e51b8152600401610a2e90613121565b601155565b60006001600160a01b0382166112ef5760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b6064820152608401610a2e565b506001600160a01b031660009081526003602052604090205490565b600a546001600160a01b031633146113355760405162461bcd60e51b8152600401610a2e90613121565b61133f60006122f0565b565b600a546001600160a01b0316331461136b5760405162461bcd60e51b8152600401610a2e90613121565b601255565b606060018054610a9990613278565b60004260145410156113925750600e5490565b50600d5490565b60155460ff16156113e55760405162461bcd60e51b8152602060048201526016602482015275151a194818dbdb9d1c9858dd081a5cc81c185d5cd95960521b6044820152606401610a2e565b426013541061142f5760405162461bcd60e51b8152602060048201526016602482015275135a5b9d1a5b99c81a5cc81b9bdd081cdd185c9d195960521b6044820152606401610a2e565b600061143a60085490565b90506000821161148c5760405162461bcd60e51b815260206004820152601d60248201527f4174206c656173742031204e4654206d757374206265206d696e7465640000006044820152606401610a2e565b60115461149983836131ea565b11156114e05760405162461bcd60e51b815260206004820152601660248201527513585e08139195081b1a5b5a5d08195e18d95959195960521b6044820152606401610a2e565b600a546001600160a01b03163314611c17576114fa611064565b6001141561193e57601554601654601754336000818152601860205260408082205490516370a0823160e01b815260048101939093526101009095046001600160a01b03908116959481169493169260ff169185906370a082319060240160206040518083038186803b15801561157057600080fd5b505afa158015611584573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115a89190612e74565b6040516370a0823160e01b81523360048201529091506000906001600160a01b038616906370a082319060240160206040518083038186803b1580156115ed57600080fd5b505afa158015611601573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116259190612e74565b6040516370a0823160e01b81523360048201529091506000906001600160a01b038616906370a082319060240160206040518083038186803b15801561166a57600080fd5b505afa15801561167e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116a29190612e74565b9050600181836116b286886131ea565b6116bc91906131ea565b6116c691906131ea565b106118b857600080826116d985876131ea565b6116e391906131ea565b11156116ed575060145b60006116f982876131ea565b33600090815260196020526040902054601254919250908c111561172f5760405162461bcd60e51b8152600401610a2e906130b1565b8b600d5461173d9190613216565b34101561175c5760405162461bcd60e51b8152600401610a2e906130f5565b816117678d836131ea565b116117ee578b600f5461177a9190613216565b34106117985760405162461bcd60e51b8152600401610a2e906130f5565b60015b8c81116117e8573360009081526019602052604081208054916117bd836132b3565b909155506117d69050336117d1838f6131ea565b612342565b806117e0816132b3565b91505061179b565b506118b0565b81811461180d5760405162461bcd60e51b8152600401610a2e90613063565b816118188d836131ea565b116118355760405162461bcd60e51b8152600401610a2e90613063565b6012548c11156118575760405162461bcd60e51b8152600401610a2e906130b1565b8b600f546118659190613216565b3410156118845760405162461bcd60e51b8152600401610a2e906131a7565b60015b8c81116118ae5761189c336117d1838f6131ea565b806118a6816132b3565b915050611887565b505b505050611933565b6012548911156118da5760405162461bcd60e51b8152600401610a2e906130b1565b88600f546118e89190613216565b3410156119075760405162461bcd60e51b8152600401610a2e906130f5565b60015b8981116119315761191f336117d1838c6131ea565b80611929816132b3565b91505061190a565b505b505050505050505050565b6015546016546017546040516370a0823160e01b81523360048201526101009093046001600160a01b03908116939281169291169060009084906370a082319060240160206040518083038186803b15801561199957600080fd5b505afa1580156119ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d19190612e74565b6040516370a0823160e01b81523360048201529091506000906001600160a01b038516906370a082319060240160206040518083038186803b158015611a1657600080fd5b505afa158015611a2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a4e9190612e74565b6040516370a0823160e01b81523360048201529091506000906001600160a01b038516906370a082319060240160206040518083038186803b158015611a9357600080fd5b505afa158015611aa7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611acb9190612e74565b9050600181611ada84866131ea565b611ae491906131ea565b10611b9457601254881115611b0b5760405162461bcd60e51b8152600401610a2e906130b1565b87600e54611b199190613216565b341015611b385760405162461bcd60e51b8152600401610a2e906130f5565b87601054611b469190613216565b3410611b645760405162461bcd60e51b8152600401610a2e906131a7565b60015b888111611b8e57611b7c336117d1838b6131ea565b80611b86816132b3565b915050611b67565b50611c0d565b601254881115611bb65760405162461bcd60e51b8152600401610a2e906130b1565b87601054611bc49190613216565b341015611be35760405162461bcd60e51b8152600401610a2e906130f5565b60015b88811161193357611bfb336117d1838b6131ea565b80611c05816132b3565b915050611be6565b5050505050505050565b60015b828111610cc257611c2f336117d183856131ea565b80611c39816132b3565b915050611c1a565b61114c33838361235c565b600a546001600160a01b03163314611c765760405162461bcd60e51b8152600401610a2e90613121565b60005b82811015611cea578160186000868685818110611c9857611c98613324565b9050602002016020810190611cad9190612bd7565b6001600160a01b031681526020810191909152604001600020805460ff191660ff9290921691909117905580611ce2816132b3565b915050611c79565b50505050565b611cfa338361204e565b611d165760405162461bcd60e51b8152600401610a2e90613156565b611cea8484848461242b565b600a546001600160a01b03163314611d4c5760405162461bcd60e51b8152600401610a2e90613121565b600f55565b600a546001600160a01b03163314611d7b5760405162461bcd60e51b8152600401610a2e90613121565b601455565b600c80546111d490613278565b6000818152600260205260409020546060906001600160a01b0316611e0c5760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610a2e565b6000611e1661245e565b90506000815111611e365760405180602001604052806000815250611e64565b80611e408461246d565b600c604051602001611e5493929190612eb9565b6040516020818303038152906040525b9392505050565b600a546001600160a01b03163314611e955760405162461bcd60e51b8152600401610a2e90613121565b600e55565b600a546001600160a01b03163314611ec45760405162461bcd60e51b8152600401610a2e90613121565b805161114c90600c906020840190612a9c565b6000426014541015611eea575060105490565b50600f5490565b600a546001600160a01b03163314611f1b5760405162461bcd60e51b8152600401610a2e90613121565b6001600160a01b038116611f805760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a2e565b611f89816122f0565b50565b600a546001600160a01b03163314611fb65760405162461bcd60e51b8152600401610a2e90613121565b601055565b60006001600160e01b0319821663780e9d6360e01b1480610a475750610a478261256b565b600081815260046020526040902080546001600160a01b0319166001600160a01b038416908117909155819061201582611150565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000818152600260205260408120546001600160a01b03166120c75760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610a2e565b60006120d283611150565b9050806001600160a01b0316846001600160a01b0316148061210d5750836001600160a01b031661210284610b1c565b6001600160a01b0316145b8061213d57506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b031661215882611150565b6001600160a01b0316146121c05760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b6064820152608401610a2e565b6001600160a01b0382166122225760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610a2e565b61222d8383836125bb565b612238600082611fe0565b6001600160a01b0383166000908152600360205260408120805460019290612261908490613235565b90915550506001600160a01b038216600090815260036020526040812080546001929061228f9084906131ea565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b61114c8282604051806020016040528060008152506125c6565b816001600160a01b0316836001600160a01b031614156123be5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610a2e565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b612436848484612145565b612442848484846125f9565b611cea5760405162461bcd60e51b8152600401610a2e90613011565b6060600b8054610a9990613278565b6060816124915750506040805180820190915260018152600360fc1b602082015290565b8160005b81156124bb57806124a5816132b3565b91506124b49050600a83613202565b9150612495565b60008167ffffffffffffffff8111156124d6576124d661333a565b6040519080825280601f01601f191660200182016040528015612500576020820181803683370190505b5090505b841561213d57612515600183613235565b9150612522600a866132ce565b61252d9060306131ea565b60f81b81838151811061254257612542613324565b60200101906001600160f81b031916908160001a905350612564600a86613202565b9450612504565b60006001600160e01b031982166380ac58cd60e01b148061259c57506001600160e01b03198216635b5e139f60e01b145b80610a4757506301ffc9a760e01b6001600160e01b0319831614610a47565b610cc2838383612706565b6125d083836127be565b6125dd60008484846125f9565b610cc25760405162461bcd60e51b8152600401610a2e90613011565b60006001600160a01b0384163b156126fb57604051630a85bd0160e11b81526001600160a01b0385169063150b7a029061263d903390899088908890600401612f7d565b602060405180830381600087803b15801561265757600080fd5b505af1925050508015612687575060408051601f3d908101601f1916820190925261268491810190612df5565b60015b6126e1573d8080156126b5576040519150601f19603f3d011682016040523d82523d6000602084013e6126ba565b606091505b5080516126d95760405162461bcd60e51b8152600401610a2e90613011565b805181602001fd5b6001600160e01b031916630a85bd0160e11b14905061213d565b506001949350505050565b6001600160a01b0383166127615761275c81600880546000838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b612784565b816001600160a01b0316836001600160a01b03161461278457612784838261290c565b6001600160a01b03821661279b57610cc2816129a9565b826001600160a01b0316826001600160a01b031614610cc257610cc28282612a58565b6001600160a01b0382166128145760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610a2e565b6000818152600260205260409020546001600160a01b0316156128795760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610a2e565b612885600083836125bb565b6001600160a01b03821660009081526003602052604081208054600192906128ae9084906131ea565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000600161291984611284565b6129239190613235565b600083815260076020526040902054909150808214612976576001600160a01b03841660009081526006602090815260408083208584528252808320548484528184208190558352600790915290208190555b5060009182526007602090815260408084208490556001600160a01b039094168352600681528383209183525290812055565b6008546000906129bb90600190613235565b600083815260096020526040812054600880549394509092849081106129e3576129e3613324565b906000526020600020015490508060088381548110612a0457612a04613324565b6000918252602080832090910192909255828152600990915260408082208490558582528120556008805480612a3c57612a3c61330e565b6001900381819060005260206000200160009055905550505050565b6000612a6383611284565b6001600160a01b039093166000908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b828054612aa890613278565b90600052602060002090601f016020900481019282612aca5760008555612b10565b82601f10612ae357805160ff1916838001178555612b10565b82800160010185558215612b10579182015b82811115612b10578251825591602001919060010190612af5565b50612b1c929150612b20565b5090565b5b80821115612b1c5760008155600101612b21565b600067ffffffffffffffff80841115612b5057612b5061333a565b604051601f8501601f19908116603f01168101908282118183101715612b7857612b7861333a565b81604052809350858152868686011115612b9157600080fd5b858560208301376000602087830101525050509392505050565b80356001600160a01b0381168114612bc257600080fd5b919050565b80358015158114612bc257600080fd5b600060208284031215612be957600080fd5b611e6482612bab565b60008060408385031215612c0557600080fd5b612c0e83612bab565b9150612c1c60208401612bab565b90509250929050565b600080600060608486031215612c3a57600080fd5b612c4384612bab565b9250612c5160208501612bab565b9150604084013590509250925092565b60008060008060808587031215612c7757600080fd5b612c8085612bab565b9350612c8e60208601612bab565b925060408501359150606085013567ffffffffffffffff811115612cb157600080fd5b8501601f81018713612cc257600080fd5b612cd187823560208401612b35565b91505092959194509250565b60008060408385031215612cf057600080fd5b612cf983612bab565b9150612c1c60208401612bc7565b60008060408385031215612d1a57600080fd5b612d2383612bab565b946020939093013593505050565b600080600060408486031215612d4657600080fd5b833567ffffffffffffffff80821115612d5e57600080fd5b818601915086601f830112612d7257600080fd5b813581811115612d8157600080fd5b8760208260051b8501011115612d9657600080fd5b6020928301955093505084013560ff81168114612db257600080fd5b809150509250925092565b600060208284031215612dcf57600080fd5b611e6482612bc7565b600060208284031215612dea57600080fd5b8135611e6481613350565b600060208284031215612e0757600080fd5b8151611e6481613350565b600060208284031215612e2457600080fd5b813567ffffffffffffffff811115612e3b57600080fd5b8201601f81018413612e4c57600080fd5b61213d84823560208401612b35565b600060208284031215612e6d57600080fd5b5035919050565b600060208284031215612e8657600080fd5b5051919050565b60008151808452612ea581602086016020860161324c565b601f01601f19169290920160200192915050565b600084516020612ecc8285838a0161324c565b855191840191612edf8184848a0161324c565b8554920191600090600181811c9080831680612efc57607f831692505b858310811415612f1a57634e487b7160e01b85526022600452602485fd5b808015612f2e5760018114612f3f57612f6c565b60ff19851688528388019550612f6c565b60008b81526020902060005b85811015612f645781548a820152908401908801612f4b565b505083880195505b50939b9a5050505050505050505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090612fb090830184612e8d565b9695505050505050565b6020808252825182820181905260009190848201906040850190845b81811015612ff257835183529284019291840191600101612fd6565b50909695505050505050565b602081526000611e646020830184612e8d565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6020808252602e908201527f4d617820626f6e7573206d696e7420616d6f756e74207065722073657373696f60408201526d1b881b9bdd08195e18d95959195960921b606082015260800190565b60208082526024908201527f4d6178206d696e7420616d6f756e74207065722073657373696f6e20657863656040820152631959195960e21b606082015260800190565b602080825260129082015271496e73756666696369656e742066756e647360701b604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b60208082526023908201527f4669727374206d696e74206174207370656369616c2070726963652c20706c6560408201526261736560e81b606082015260800190565b600082198211156131fd576131fd6132e2565b500190565b600082613211576132116132f8565b500490565b6000816000190483118215151615613230576132306132e2565b500290565b600082821015613247576132476132e2565b500390565b60005b8381101561326757818101518382015260200161324f565b83811115611cea5750506000910152565b600181811c9082168061328c57607f821691505b602082108114156132ad57634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156132c7576132c76132e2565b5060010190565b6000826132dd576132dd6132f8565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b031981168114611f8957600080fdfea26469706673582212202cf5f3d93d3995375bdd03c4bb35aedd1ab8b389f749cf12f21f5cb4b3c8d5e664736f6c6343000807003368747470733a2f2f697066732e696f2f697066732f516d544c375a4c333977366350387a7531634d597854664a46445877673457645174456a34596431595756424265
Deployed Bytecode
0x6080604052600436106103345760003560e01c806368cccfb5116101ab578063aabb75d0116100f7578063cf588d8a11610095578063e985e9c51161006f578063e985e9c514610966578063ea798c6d146109af578063f2fde38b146109c4578063fdab4d5e146109e457600080fd5b8063cf588d8a14610910578063d5abeb0114610930578063da3ef23f1461094657600080fd5b8063c04a2836116100d1578063c04a283614610870578063c20c0a0a146108bb578063c6682862146108db578063c87b56dd146108f057600080fd5b8063aabb75d014610810578063b88d4fde14610830578063bc8eaf2a1461085057600080fd5b80638da5cb5b11610164578063a0712d681161013e578063a0712d6814610796578063a1c4acb3146107a9578063a22cb465146107cb578063a349447f146107eb57600080fd5b80638da5cb5b1461074e57806395d89b411461076c5780639b536ba21461078157600080fd5b806368cccfb5146106ae5780636c0360eb146106c45780636f8b44b0146106d957806370a08231146106f9578063715018a6146107195780637f00c7a61461072e57600080fd5b8063370158ea1161028557806347b3442b116102235780635c975abb116101fd5780635c975abb1461063e5780635fa97cef146106585780636352211e1461067857806365cf3a481461069857600080fd5b806347b3442b146105e85780634f6ccce7146105fe57806355f804b31461061e57600080fd5b80633d97a41f1161025f5780633d97a41f1461057057806342842e0e14610586578063438b6300146105a657806343b34142146105d357600080fd5b8063370158ea146104f95780633ccfd60b146105525780633d3b94c21461055a57600080fd5b806315359375116102f2578063239c70ae116102cc578063239c70ae1461048357806323b872dd146104995780632f4db712146104b95780632f745c59146104d957600080fd5b8063153593751461042a57806318160ddd1461044e5780631cc4594e1461046357600080fd5b8062ebf2e01461033957806301ffc9a71461035b57806302329a291461039057806306fdde03146103b0578063081812fc146103d2578063095ea7b31461040a575b600080fd5b34801561034557600080fd5b50610359610354366004612e5b565b610a04565b005b34801561036757600080fd5b5061037b610376366004612dd8565b610a3c565b60405190151581526020015b60405180910390f35b34801561039c57600080fd5b506103596103ab366004612dbd565b610a4d565b3480156103bc57600080fd5b506103c5610a8a565b6040516103879190612ffe565b3480156103de57600080fd5b506103f26103ed366004612e5b565b610b1c565b6040516001600160a01b039091168152602001610387565b34801561041657600080fd5b50610359610425366004612d07565b610bb1565b34801561043657600080fd5b50610440600f5481565b604051908152602001610387565b34801561045a57600080fd5b50600854610440565b34801561046f57600080fd5b5061035961047e366004612e5b565b610cc7565b34801561048f57600080fd5b5061044060125481565b3480156104a557600080fd5b506103596104b4366004612c25565b610cf6565b3480156104c557600080fd5b506017546103f2906001600160a01b031681565b3480156104e557600080fd5b506104406104f4366004612d07565b610d27565b34801561050557600080fd5b5061050e610dbd565b60408051998a5260208a0198909852968801959095526060870193909352608086019190915260a085015260c084015260e083015261010082015261012001610387565b610359610e12565b34801561056657600080fd5b50610440600e5481565b34801561057c57600080fd5b5061044060145481565b34801561059257600080fd5b506103596105a1366004612c25565b610fa7565b3480156105b257600080fd5b506105c66105c1366004612bd7565b610fc2565b6040516103879190612fba565b3480156105df57600080fd5b50610440611064565b3480156105f457600080fd5b5061044060135481565b34801561060a57600080fd5b50610440610619366004612e5b565b61107c565b34801561062a57600080fd5b50610359610639366004612e12565b61110f565b34801561064a57600080fd5b5060155461037b9060ff1681565b34801561066457600080fd5b506016546103f2906001600160a01b031681565b34801561068457600080fd5b506103f2610693366004612e5b565b611150565b3480156106a457600080fd5b50610440600d5481565b3480156106ba57600080fd5b5061044060105481565b3480156106d057600080fd5b506103c56111c7565b3480156106e557600080fd5b506103596106f4366004612e5b565b611255565b34801561070557600080fd5b50610440610714366004612bd7565b611284565b34801561072557600080fd5b5061035961130b565b34801561073a57600080fd5b50610359610749366004612e5b565b611341565b34801561075a57600080fd5b50600a546001600160a01b03166103f2565b34801561077857600080fd5b506103c5611370565b34801561078d57600080fd5b5061044061137f565b6103596107a4366004612e5b565b611399565b3480156107b557600080fd5b5033600090815260196020526040902054610440565b3480156107d757600080fd5b506103596107e6366004612cdd565b611c41565b3480156107f757600080fd5b506015546103f29061010090046001600160a01b031681565b34801561081c57600080fd5b5061035961082b366004612d31565b611c4c565b34801561083c57600080fd5b5061035961084b366004612c61565b611cf0565b34801561085c57600080fd5b5061035961086b366004612e5b565b611d22565b34801561087c57600080fd5b506108a961088b366004612bd7565b6001600160a01b031660009081526018602052604090205460ff1690565b60405160ff9091168152602001610387565b3480156108c757600080fd5b506103596108d6366004612e5b565b611d51565b3480156108e757600080fd5b506103c5611d80565b3480156108fc57600080fd5b506103c561090b366004612e5b565b611d8d565b34801561091c57600080fd5b5061035961092b366004612e5b565b611e6b565b34801561093c57600080fd5b5061044060115481565b34801561095257600080fd5b50610359610961366004612e12565b611e9a565b34801561097257600080fd5b5061037b610981366004612bf2565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b3480156109bb57600080fd5b50610440611ed7565b3480156109d057600080fd5b506103596109df366004612bd7565b611ef1565b3480156109f057600080fd5b506103596109ff366004612e5b565b611f8c565b600a546001600160a01b03163314610a375760405162461bcd60e51b8152600401610a2e90613121565b60405180910390fd5b601355565b6000610a4782611fbb565b92915050565b600a546001600160a01b03163314610a775760405162461bcd60e51b8152600401610a2e90613121565b6015805460ff1916911515919091179055565b606060008054610a9990613278565b80601f0160208091040260200160405190810160405280929190818152602001828054610ac590613278565b8015610b125780601f10610ae757610100808354040283529160200191610b12565b820191906000526020600020905b815481529060010190602001808311610af557829003601f168201915b5050505050905090565b6000818152600260205260408120546001600160a01b0316610b955760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610a2e565b506000908152600460205260409020546001600160a01b031690565b6000610bbc82611150565b9050806001600160a01b0316836001600160a01b03161415610c2a5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610a2e565b336001600160a01b0382161480610c465750610c468133610981565b610cb85760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610a2e565b610cc28383611fe0565b505050565b600a546001600160a01b03163314610cf15760405162461bcd60e51b8152600401610a2e90613121565b600d55565b610d00338261204e565b610d1c5760405162461bcd60e51b8152600401610a2e90613156565b610cc2838383612145565b6000610d3283611284565b8210610d945760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b6064820152608401610a2e565b506001600160a01b03919091166000908152600660209081526040808320938352929052205490565b6000806000806000806000806000610dd3611064565b610ddb61137f565b610de3611ed7565b601354601454600d54600f54600e54601054985098509850985098509850985098509850909192939495969798565b600a546001600160a01b03163314610e3c5760405162461bcd60e51b8152600401610a2e90613121565b600073984b4418ad10d5844e8927c8197540514033fff76064610e60476032613216565b610e6a9190613202565b604051600081818185875af1925050503d8060008114610ea6576040519150601f19603f3d011682016040523d82523d6000602084013e610eab565b606091505b5050905080610eb957600080fd5b600073faf57c09291c289583216a02864a9c291e48e0526064610edd476032613216565b610ee79190613202565b604051600081818185875af1925050503d8060008114610f23576040519150601f19603f3d011682016040523d82523d6000602084013e610f28565b606091505b5050905080610f3657600080fd5b6000610f4a600a546001600160a01b031690565b6001600160a01b03164760405160006040518083038185875af1925050503d8060008114610f94576040519150601f19603f3d011682016040523d82523d6000602084013e610f99565b606091505b5050905080610cc257600080fd5b610cc283838360405180602001604052806000815250611cf0565b60606000610fcf83611284565b905060008167ffffffffffffffff811115610fec57610fec61333a565b604051908082528060200260200182016040528015611015578160200160208202803683370190505b50905060005b8281101561105c5761102d8582610d27565b82828151811061103f5761103f613324565b602090810291909101015280611054816132b3565b91505061101b565b509392505050565b60004260145410156110765750600290565b50600190565b600061108760085490565b82106110ea5760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b6064820152608401610a2e565b600882815481106110fd576110fd613324565b90600052602060002001549050919050565b600a546001600160a01b031633146111395760405162461bcd60e51b8152600401610a2e90613121565b805161114c90600b906020840190612a9c565b5050565b6000818152600260205260408120546001600160a01b031680610a475760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b6064820152608401610a2e565b600b80546111d490613278565b80601f016020809104026020016040519081016040528092919081815260200182805461120090613278565b801561124d5780601f106112225761010080835404028352916020019161124d565b820191906000526020600020905b81548152906001019060200180831161123057829003601f168201915b505050505081565b600a546001600160a01b0316331461127f5760405162461bcd60e51b8152600401610a2e90613121565b601155565b60006001600160a01b0382166112ef5760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b6064820152608401610a2e565b506001600160a01b031660009081526003602052604090205490565b600a546001600160a01b031633146113355760405162461bcd60e51b8152600401610a2e90613121565b61133f60006122f0565b565b600a546001600160a01b0316331461136b5760405162461bcd60e51b8152600401610a2e90613121565b601255565b606060018054610a9990613278565b60004260145410156113925750600e5490565b50600d5490565b60155460ff16156113e55760405162461bcd60e51b8152602060048201526016602482015275151a194818dbdb9d1c9858dd081a5cc81c185d5cd95960521b6044820152606401610a2e565b426013541061142f5760405162461bcd60e51b8152602060048201526016602482015275135a5b9d1a5b99c81a5cc81b9bdd081cdd185c9d195960521b6044820152606401610a2e565b600061143a60085490565b90506000821161148c5760405162461bcd60e51b815260206004820152601d60248201527f4174206c656173742031204e4654206d757374206265206d696e7465640000006044820152606401610a2e565b60115461149983836131ea565b11156114e05760405162461bcd60e51b815260206004820152601660248201527513585e08139195081b1a5b5a5d08195e18d95959195960521b6044820152606401610a2e565b600a546001600160a01b03163314611c17576114fa611064565b6001141561193e57601554601654601754336000818152601860205260408082205490516370a0823160e01b815260048101939093526101009095046001600160a01b03908116959481169493169260ff169185906370a082319060240160206040518083038186803b15801561157057600080fd5b505afa158015611584573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115a89190612e74565b6040516370a0823160e01b81523360048201529091506000906001600160a01b038616906370a082319060240160206040518083038186803b1580156115ed57600080fd5b505afa158015611601573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116259190612e74565b6040516370a0823160e01b81523360048201529091506000906001600160a01b038616906370a082319060240160206040518083038186803b15801561166a57600080fd5b505afa15801561167e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116a29190612e74565b9050600181836116b286886131ea565b6116bc91906131ea565b6116c691906131ea565b106118b857600080826116d985876131ea565b6116e391906131ea565b11156116ed575060145b60006116f982876131ea565b33600090815260196020526040902054601254919250908c111561172f5760405162461bcd60e51b8152600401610a2e906130b1565b8b600d5461173d9190613216565b34101561175c5760405162461bcd60e51b8152600401610a2e906130f5565b816117678d836131ea565b116117ee578b600f5461177a9190613216565b34106117985760405162461bcd60e51b8152600401610a2e906130f5565b60015b8c81116117e8573360009081526019602052604081208054916117bd836132b3565b909155506117d69050336117d1838f6131ea565b612342565b806117e0816132b3565b91505061179b565b506118b0565b81811461180d5760405162461bcd60e51b8152600401610a2e90613063565b816118188d836131ea565b116118355760405162461bcd60e51b8152600401610a2e90613063565b6012548c11156118575760405162461bcd60e51b8152600401610a2e906130b1565b8b600f546118659190613216565b3410156118845760405162461bcd60e51b8152600401610a2e906131a7565b60015b8c81116118ae5761189c336117d1838f6131ea565b806118a6816132b3565b915050611887565b505b505050611933565b6012548911156118da5760405162461bcd60e51b8152600401610a2e906130b1565b88600f546118e89190613216565b3410156119075760405162461bcd60e51b8152600401610a2e906130f5565b60015b8981116119315761191f336117d1838c6131ea565b80611929816132b3565b91505061190a565b505b505050505050505050565b6015546016546017546040516370a0823160e01b81523360048201526101009093046001600160a01b03908116939281169291169060009084906370a082319060240160206040518083038186803b15801561199957600080fd5b505afa1580156119ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d19190612e74565b6040516370a0823160e01b81523360048201529091506000906001600160a01b038516906370a082319060240160206040518083038186803b158015611a1657600080fd5b505afa158015611a2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a4e9190612e74565b6040516370a0823160e01b81523360048201529091506000906001600160a01b038516906370a082319060240160206040518083038186803b158015611a9357600080fd5b505afa158015611aa7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611acb9190612e74565b9050600181611ada84866131ea565b611ae491906131ea565b10611b9457601254881115611b0b5760405162461bcd60e51b8152600401610a2e906130b1565b87600e54611b199190613216565b341015611b385760405162461bcd60e51b8152600401610a2e906130f5565b87601054611b469190613216565b3410611b645760405162461bcd60e51b8152600401610a2e906131a7565b60015b888111611b8e57611b7c336117d1838b6131ea565b80611b86816132b3565b915050611b67565b50611c0d565b601254881115611bb65760405162461bcd60e51b8152600401610a2e906130b1565b87601054611bc49190613216565b341015611be35760405162461bcd60e51b8152600401610a2e906130f5565b60015b88811161193357611bfb336117d1838b6131ea565b80611c05816132b3565b915050611be6565b5050505050505050565b60015b828111610cc257611c2f336117d183856131ea565b80611c39816132b3565b915050611c1a565b61114c33838361235c565b600a546001600160a01b03163314611c765760405162461bcd60e51b8152600401610a2e90613121565b60005b82811015611cea578160186000868685818110611c9857611c98613324565b9050602002016020810190611cad9190612bd7565b6001600160a01b031681526020810191909152604001600020805460ff191660ff9290921691909117905580611ce2816132b3565b915050611c79565b50505050565b611cfa338361204e565b611d165760405162461bcd60e51b8152600401610a2e90613156565b611cea8484848461242b565b600a546001600160a01b03163314611d4c5760405162461bcd60e51b8152600401610a2e90613121565b600f55565b600a546001600160a01b03163314611d7b5760405162461bcd60e51b8152600401610a2e90613121565b601455565b600c80546111d490613278565b6000818152600260205260409020546060906001600160a01b0316611e0c5760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610a2e565b6000611e1661245e565b90506000815111611e365760405180602001604052806000815250611e64565b80611e408461246d565b600c604051602001611e5493929190612eb9565b6040516020818303038152906040525b9392505050565b600a546001600160a01b03163314611e955760405162461bcd60e51b8152600401610a2e90613121565b600e55565b600a546001600160a01b03163314611ec45760405162461bcd60e51b8152600401610a2e90613121565b805161114c90600c906020840190612a9c565b6000426014541015611eea575060105490565b50600f5490565b600a546001600160a01b03163314611f1b5760405162461bcd60e51b8152600401610a2e90613121565b6001600160a01b038116611f805760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a2e565b611f89816122f0565b50565b600a546001600160a01b03163314611fb65760405162461bcd60e51b8152600401610a2e90613121565b601055565b60006001600160e01b0319821663780e9d6360e01b1480610a475750610a478261256b565b600081815260046020526040902080546001600160a01b0319166001600160a01b038416908117909155819061201582611150565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000818152600260205260408120546001600160a01b03166120c75760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610a2e565b60006120d283611150565b9050806001600160a01b0316846001600160a01b0316148061210d5750836001600160a01b031661210284610b1c565b6001600160a01b0316145b8061213d57506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b031661215882611150565b6001600160a01b0316146121c05760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b6064820152608401610a2e565b6001600160a01b0382166122225760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610a2e565b61222d8383836125bb565b612238600082611fe0565b6001600160a01b0383166000908152600360205260408120805460019290612261908490613235565b90915550506001600160a01b038216600090815260036020526040812080546001929061228f9084906131ea565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b61114c8282604051806020016040528060008152506125c6565b816001600160a01b0316836001600160a01b031614156123be5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610a2e565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b612436848484612145565b612442848484846125f9565b611cea5760405162461bcd60e51b8152600401610a2e90613011565b6060600b8054610a9990613278565b6060816124915750506040805180820190915260018152600360fc1b602082015290565b8160005b81156124bb57806124a5816132b3565b91506124b49050600a83613202565b9150612495565b60008167ffffffffffffffff8111156124d6576124d661333a565b6040519080825280601f01601f191660200182016040528015612500576020820181803683370190505b5090505b841561213d57612515600183613235565b9150612522600a866132ce565b61252d9060306131ea565b60f81b81838151811061254257612542613324565b60200101906001600160f81b031916908160001a905350612564600a86613202565b9450612504565b60006001600160e01b031982166380ac58cd60e01b148061259c57506001600160e01b03198216635b5e139f60e01b145b80610a4757506301ffc9a760e01b6001600160e01b0319831614610a47565b610cc2838383612706565b6125d083836127be565b6125dd60008484846125f9565b610cc25760405162461bcd60e51b8152600401610a2e90613011565b60006001600160a01b0384163b156126fb57604051630a85bd0160e11b81526001600160a01b0385169063150b7a029061263d903390899088908890600401612f7d565b602060405180830381600087803b15801561265757600080fd5b505af1925050508015612687575060408051601f3d908101601f1916820190925261268491810190612df5565b60015b6126e1573d8080156126b5576040519150601f19603f3d011682016040523d82523d6000602084013e6126ba565b606091505b5080516126d95760405162461bcd60e51b8152600401610a2e90613011565b805181602001fd5b6001600160e01b031916630a85bd0160e11b14905061213d565b506001949350505050565b6001600160a01b0383166127615761275c81600880546000838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b612784565b816001600160a01b0316836001600160a01b03161461278457612784838261290c565b6001600160a01b03821661279b57610cc2816129a9565b826001600160a01b0316826001600160a01b031614610cc257610cc28282612a58565b6001600160a01b0382166128145760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610a2e565b6000818152600260205260409020546001600160a01b0316156128795760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610a2e565b612885600083836125bb565b6001600160a01b03821660009081526003602052604081208054600192906128ae9084906131ea565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000600161291984611284565b6129239190613235565b600083815260076020526040902054909150808214612976576001600160a01b03841660009081526006602090815260408083208584528252808320548484528184208190558352600790915290208190555b5060009182526007602090815260408084208490556001600160a01b039094168352600681528383209183525290812055565b6008546000906129bb90600190613235565b600083815260096020526040812054600880549394509092849081106129e3576129e3613324565b906000526020600020015490508060088381548110612a0457612a04613324565b6000918252602080832090910192909255828152600990915260408082208490558582528120556008805480612a3c57612a3c61330e565b6001900381819060005260206000200160009055905550505050565b6000612a6383611284565b6001600160a01b039093166000908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b828054612aa890613278565b90600052602060002090601f016020900481019282612aca5760008555612b10565b82601f10612ae357805160ff1916838001178555612b10565b82800160010185558215612b10579182015b82811115612b10578251825591602001919060010190612af5565b50612b1c929150612b20565b5090565b5b80821115612b1c5760008155600101612b21565b600067ffffffffffffffff80841115612b5057612b5061333a565b604051601f8501601f19908116603f01168101908282118183101715612b7857612b7861333a565b81604052809350858152868686011115612b9157600080fd5b858560208301376000602087830101525050509392505050565b80356001600160a01b0381168114612bc257600080fd5b919050565b80358015158114612bc257600080fd5b600060208284031215612be957600080fd5b611e6482612bab565b60008060408385031215612c0557600080fd5b612c0e83612bab565b9150612c1c60208401612bab565b90509250929050565b600080600060608486031215612c3a57600080fd5b612c4384612bab565b9250612c5160208501612bab565b9150604084013590509250925092565b60008060008060808587031215612c7757600080fd5b612c8085612bab565b9350612c8e60208601612bab565b925060408501359150606085013567ffffffffffffffff811115612cb157600080fd5b8501601f81018713612cc257600080fd5b612cd187823560208401612b35565b91505092959194509250565b60008060408385031215612cf057600080fd5b612cf983612bab565b9150612c1c60208401612bc7565b60008060408385031215612d1a57600080fd5b612d2383612bab565b946020939093013593505050565b600080600060408486031215612d4657600080fd5b833567ffffffffffffffff80821115612d5e57600080fd5b818601915086601f830112612d7257600080fd5b813581811115612d8157600080fd5b8760208260051b8501011115612d9657600080fd5b6020928301955093505084013560ff81168114612db257600080fd5b809150509250925092565b600060208284031215612dcf57600080fd5b611e6482612bc7565b600060208284031215612dea57600080fd5b8135611e6481613350565b600060208284031215612e0757600080fd5b8151611e6481613350565b600060208284031215612e2457600080fd5b813567ffffffffffffffff811115612e3b57600080fd5b8201601f81018413612e4c57600080fd5b61213d84823560208401612b35565b600060208284031215612e6d57600080fd5b5035919050565b600060208284031215612e8657600080fd5b5051919050565b60008151808452612ea581602086016020860161324c565b601f01601f19169290920160200192915050565b600084516020612ecc8285838a0161324c565b855191840191612edf8184848a0161324c565b8554920191600090600181811c9080831680612efc57607f831692505b858310811415612f1a57634e487b7160e01b85526022600452602485fd5b808015612f2e5760018114612f3f57612f6c565b60ff19851688528388019550612f6c565b60008b81526020902060005b85811015612f645781548a820152908401908801612f4b565b505083880195505b50939b9a5050505050505050505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090612fb090830184612e8d565b9695505050505050565b6020808252825182820181905260009190848201906040850190845b81811015612ff257835183529284019291840191600101612fd6565b50909695505050505050565b602081526000611e646020830184612e8d565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6020808252602e908201527f4d617820626f6e7573206d696e7420616d6f756e74207065722073657373696f60408201526d1b881b9bdd08195e18d95959195960921b606082015260800190565b60208082526024908201527f4d6178206d696e7420616d6f756e74207065722073657373696f6e20657863656040820152631959195960e21b606082015260800190565b602080825260129082015271496e73756666696369656e742066756e647360701b604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b60208082526023908201527f4669727374206d696e74206174207370656369616c2070726963652c20706c6560408201526261736560e81b606082015260800190565b600082198211156131fd576131fd6132e2565b500190565b600082613211576132116132f8565b500490565b6000816000190483118215151615613230576132306132e2565b500290565b600082821015613247576132476132e2565b500390565b60005b8381101561326757818101518382015260200161324f565b83811115611cea5750506000910152565b600181811c9082168061328c57607f821691505b602082108114156132ad57634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156132c7576132c76132e2565b5060010190565b6000826132dd576132dd6132f8565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b031981168114611f8957600080fdfea26469706673582212202cf5f3d93d3995375bdd03c4bb35aedd1ab8b389f749cf12f21f5cb4b3c8d5e664736f6c63430008070033
Deployed Bytecode Sourcemap
44483:10277:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;53416:124;;;;;;;;;;-1:-1:-1;53416:124:0;;;;;:::i;:::-;;:::i;:::-;;51415:175;;;;;;;;;;-1:-1:-1;51415:175:0;;;;;:::i;:::-;;:::i;:::-;;;8779:14:1;;8772:22;8754:41;;8742:2;8727:18;51415:175:0;;;;;;;;54192:81;;;;;;;;;;-1:-1:-1;54192:81:0;;;;;:::i;:::-;;:::i;25760:100::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;27319:221::-;;;;;;;;;;-1:-1:-1;27319:221:0;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;7440:32:1;;;7422:51;;7410:2;7395:18;27319:221:0;7276:203:1;26842:411:0;;;;;;;;;;-1:-1:-1;26842:411:0;;;;;:::i;:::-;;:::i;44839:40::-;;;;;;;;;;;;;;;;;;;19365:25:1;;;19353:2;19338:18;44839:40:0;19219:177:1;38906:113:0;;;;;;;;;;-1:-1:-1;38994:10:0;:17;38906:113;;52901:112;;;;;;;;;;-1:-1:-1;52901:112:0;;;;;:::i;:::-;;:::i;44988:32::-;;;;;;;;;;;;;;;;28069:339;;;;;;;;;;-1:-1:-1;28069:339:0;;;;;:::i;:::-;;:::i;45374:72::-;;;;;;;;;;-1:-1:-1;45374:72:0;;;;-1:-1:-1;;;;;45374:72:0;;;38574:256;;;;;;;;;;-1:-1:-1;38574:256:0;;;;;:::i;:::-;;:::i;52373:276::-;;;;;;;;;;;;;:::i;:::-;;;;19772:25:1;;;19828:2;19813:18;;19806:34;;;;19856:18;;;19849:34;;;;19914:2;19899:18;;19892:34;;;;19957:3;19942:19;;19935:35;;;;20001:3;19986:19;;19979:35;20045:3;20030:19;;20023:35;20089:3;20074:19;;20067:35;20133:3;20118:19;;20111:35;19759:3;19744:19;52373:276:0;19401:751:1;54289:468:0;;;:::i;44781:41::-;;;;;;;;;;;;;;;;45107:43;;;;;;;;;;;;;;;;28479:185;;;;;;;;;;-1:-1:-1;28479:185:0;;;;;:::i;:::-;;:::i;51598:353::-;;;;;;;;;;-1:-1:-1;51598:353:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;46089:203::-;;;;;;;;;;;;;:::i;45025:41::-;;;;;;;;;;;;;;;;39096:233;;;;;;;;;;-1:-1:-1;39096:233:0;;;;;:::i;:::-;;:::i;53820:106::-;;;;;;;;;;-1:-1:-1;53820:106:0;;;;;:::i;:::-;;:::i;45189:26::-;;;;;;;;;;-1:-1:-1;45189:26:0;;;;;;;;45297:72;;;;;;;;;;-1:-1:-1;45297:72:0;;;;-1:-1:-1;;;;;45297:72:0;;;25454:239;;;;;;;;;;-1:-1:-1;25454:239:0;;;;;:::i;:::-;;:::i;44727:39::-;;;;;;;;;;;;;;;;44896:40;;;;;;;;;;;;;;;;44587:93;;;;;;;;;;;;;:::i;54072:108::-;;;;;;;;;;-1:-1:-1;54072:108:0;;;;;:::i;:::-;;:::i;25184:208::-;;;;;;;;;;-1:-1:-1;25184:208:0;;;;;:::i;:::-;;:::i;4730:103::-;;;;;;;;;;;;;:::i;53688:124::-;;;;;;;;;;-1:-1:-1;53688:124:0;;;;;:::i;:::-;;:::i;4079:87::-;;;;;;;;;;-1:-1:-1;4152:6:0;;-1:-1:-1;;;;;4152:6:0;4079:87;;25929:104;;;;;;;;;;;;;:::i;45729:173::-;;;;;;;;;;;;;:::i;46408:4664::-;;;;;;:::i;:::-;;:::i;51082:140::-;;;;;;;;;;-1:-1:-1;51193:10:0;51133:7;51172:32;;;:20;:32;;;;;;51082:140;;27612:155;;;;;;;;;;-1:-1:-1;27612:155:0;;;;;:::i;:::-;;:::i;45220:72::-;;;;;;;;;;-1:-1:-1;45220:72:0;;;;;;;-1:-1:-1;;;;;45220:72:0;;;52675:214;;;;;;;;;;-1:-1:-1;52675:214:0;;;;;:::i;:::-;;:::i;28735:328::-;;;;;;;;;;-1:-1:-1;28735:328:0;;;;;:::i;:::-;;:::i;53021:120::-;;;;;;;;;;-1:-1:-1;53021:120:0;;;;;:::i;:::-;;:::i;46300:102::-;;;;;;;;;;-1:-1:-1;46300:102:0;;;;;:::i;:::-;-1:-1:-1;;;;;46380:20:0;46365:5;46380:20;;;:14;:20;;;;;;;;;46300:102;;;;20329:4:1;20317:17;;;20299:36;;20287:2;20272:18;46300:102:0;20157:184:1;53548:132:0;;;;;;;;;;-1:-1:-1;53548:132:0;;;;;:::i;:::-;;:::i;44685:37::-;;;;;;;;;;;;;:::i;51959:406::-;;;;;;;;;;-1:-1:-1;51959:406:0;;;;;:::i;:::-;;:::i;53149:120::-;;;;;;;;;;-1:-1:-1;53149:120:0;;;;;:::i;:::-;;:::i;44951:32::-;;;;;;;;;;;;;;;;53934:130;;;;;;;;;;-1:-1:-1;53934:130:0;;;;;:::i;:::-;;:::i;27838:164::-;;;;;;;;;;-1:-1:-1;27838:164:0;;;;;:::i;:::-;-1:-1:-1;;;;;27959:25:0;;;27935:4;27959:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;27838:164;45908:175;;;;;;;;;;;;;:::i;4988:201::-;;;;;;;;;;-1:-1:-1;4988:201:0;;;;;:::i;:::-;;:::i;53288:120::-;;;;;;;;;;-1:-1:-1;53288:120:0;;;;;:::i;:::-;;:::i;53416:124::-;4152:6;;-1:-1:-1;;;;;4152:6:0;2883:10;4299:23;4291:68;;;;-1:-1:-1;;;4291:68:0;;;;;;;:::i;:::-;;;;;;;;;53505:13:::1;:33:::0;53416:124::o;51415:175::-;51526:4;51552:36;51576:11;51552:23;:36::i;:::-;51545:43;51415:175;-1:-1:-1;;51415:175:0:o;54192:81::-;4152:6;;-1:-1:-1;;;;;4152:6:0;2883:10;4299:23;4291:68;;;;-1:-1:-1;;;4291:68:0;;;;;;;:::i;:::-;54256:6:::1;:15:::0;;-1:-1:-1;;54256:15:0::1;::::0;::::1;;::::0;;;::::1;::::0;;54192:81::o;25760:100::-;25814:13;25847:5;25840:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25760:100;:::o;27319:221::-;27395:7;30662:16;;;:7;:16;;;;;;-1:-1:-1;;;;;30662:16:0;27415:73;;;;-1:-1:-1;;;27415:73:0;;15833:2:1;27415:73:0;;;15815:21:1;15872:2;15852:18;;;15845:30;15911:34;15891:18;;;15884:62;-1:-1:-1;;;15962:18:1;;;15955:42;16014:19;;27415:73:0;15631:408:1;27415:73:0;-1:-1:-1;27508:24:0;;;;:15;:24;;;;;;-1:-1:-1;;;;;27508:24:0;;27319:221::o;26842:411::-;26923:13;26939:23;26954:7;26939:14;:23::i;:::-;26923:39;;26987:5;-1:-1:-1;;;;;26981:11:0;:2;-1:-1:-1;;;;;26981:11:0;;;26973:57;;;;-1:-1:-1;;;26973:57:0;;17784:2:1;26973:57:0;;;17766:21:1;17823:2;17803:18;;;17796:30;17862:34;17842:18;;;17835:62;-1:-1:-1;;;17913:18:1;;;17906:31;17954:19;;26973:57:0;17582:397:1;26973:57:0;2883:10;-1:-1:-1;;;;;27065:21:0;;;;:62;;-1:-1:-1;27090:37:0;27107:5;2883:10;27838:164;:::i;27090:37::-;27043:168;;;;-1:-1:-1;;;27043:168:0;;13875:2:1;27043:168:0;;;13857:21:1;13914:2;13894:18;;;13887:30;13953:34;13933:18;;;13926:62;14024:26;14004:18;;;13997:54;14068:19;;27043:168:0;13673:420:1;27043:168:0;27224:21;27233:2;27237:7;27224:8;:21::i;:::-;26912:341;26842:411;;:::o;52901:112::-;4152:6;;-1:-1:-1;;;;;4152:6:0;2883:10;4299:23;4291:68;;;;-1:-1:-1;;;4291:68:0;;;;;;;:::i;:::-;52984:10:::1;:27:::0;52901:112::o;28069:339::-;28264:41;2883:10;28297:7;28264:18;:41::i;:::-;28256:103;;;;-1:-1:-1;;;28256:103:0;;;;;;;:::i;:::-;28372:28;28382:4;28388:2;28392:7;28372:9;:28::i;38574:256::-;38671:7;38707:23;38724:5;38707:16;:23::i;:::-;38699:5;:31;38691:87;;;;-1:-1:-1;;;38691:87:0;;9232:2:1;38691:87:0;;;9214:21:1;9271:2;9251:18;;;9244:30;9310:34;9290:18;;;9283:62;-1:-1:-1;;;9361:18:1;;;9354:41;9412:19;;38691:87:0;9030:407:1;38691:87:0;-1:-1:-1;;;;;;38796:19:0;;;;;;;;:12;:19;;;;;;;;:26;;;;;;;;;38574:256::o;52373:276::-;52410:7;52419;52428;52437;52446;52455;52464;52473;52482;52514:16;:14;:16::i;:::-;52532:13;:11;:13::i;:::-;52547;:11;:13::i;:::-;52562;;52577:15;;52594:10;;52606:12;;52620;;52634;;52506:141;;;;;;;;;;;;;;;;;;52373:276;;;;;;;;;:::o;54289:468::-;4152:6;;-1:-1:-1;;;;;4152:6:0;2883:10;4299:23;4291:68;;;;-1:-1:-1;;;4291:68:0;;;;;;;:::i;:::-;54349:7:::1;54370:42;54455:3;54426:26;:21;54450:2;54426:26;:::i;:::-;:32;;;;:::i;:::-;54362:101;::::0;::::1;::::0;;;;;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;54348:115;;;54486:2;54478:11;;;::::0;::::1;;54505:7;54526:42;54611:3;54582:26;:21;54606:2;54582:26;:::i;:::-;:32;;;;:::i;:::-;54518:101;::::0;::::1;::::0;;;;;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;54504:115;;;54642:2;54634:11;;;::::0;::::1;;54661:7;54682;4152:6:::0;;-1:-1:-1;;;;;4152:6:0;;4079:87;54682:7:::1;-1:-1:-1::0;;;;;54674:21:0::1;54703;54674:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;54660:69;;;54752:2;54744:11;;;::::0;::::1;28479:185:::0;28617:39;28634:4;28640:2;28644:7;28617:39;;;;;;;;;;;;:16;:39::i;51598:353::-;51657:16;51688:23;51714:16;51724:5;51714:9;:16::i;:::-;51688:42;;51745:25;51787:15;51773:30;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;51773:30:0;;51745:58;;51823:9;51818:102;51838:15;51834:1;:19;51818:102;;;51889:29;51909:5;51916:1;51889:19;:29::i;:::-;51875:8;51884:1;51875:11;;;;;;;;:::i;:::-;;;;;;;;;;:43;51855:3;;;;:::i;:::-;;;;51818:102;;;-1:-1:-1;51941:8:0;51598:353;-1:-1:-1;;;51598:353:0:o;46089:203::-;46136:7;46228:15;46210;;:33;46206:85;;;-1:-1:-1;46253:1:0;;46089:203::o;46206:85::-;-1:-1:-1;46288:1:0;;46089:203::o;39096:233::-;39171:7;39207:30;38994:10;:17;;38906:113;39207:30;39199:5;:38;39191:95;;;;-1:-1:-1;;;39191:95:0;;18604:2:1;39191:95:0;;;18586:21:1;18643:2;18623:18;;;18616:30;18682:34;18662:18;;;18655:62;-1:-1:-1;;;18733:18:1;;;18726:42;18785:19;;39191:95:0;18402:408:1;39191:95:0;39304:10;39315:5;39304:17;;;;;;;;:::i;:::-;;;;;;;;;39297:24;;39096:233;;;:::o;53820:106::-;4152:6;;-1:-1:-1;;;;;4152:6:0;2883:10;4299:23;4291:68;;;;-1:-1:-1;;;4291:68:0;;;;;;;:::i;:::-;53903:21;;::::1;::::0;:7:::1;::::0;:21:::1;::::0;::::1;::::0;::::1;:::i;:::-;;53820:106:::0;:::o;25454:239::-;25526:7;25562:16;;;:7;:16;;;;;;-1:-1:-1;;;;;25562:16:0;25597:19;25589:73;;;;-1:-1:-1;;;25589:73:0;;14711:2:1;25589:73:0;;;14693:21:1;14750:2;14730:18;;;14723:30;14789:34;14769:18;;;14762:62;-1:-1:-1;;;14840:18:1;;;14833:39;14889:19;;25589:73:0;14509:405:1;44587:93:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;54072:108::-;4152:6;;-1:-1:-1;;;;;4152:6:0;2883:10;4299:23;4291:68;;;;-1:-1:-1;;;4291:68:0;;;;;;;:::i;:::-;54153:9:::1;:25:::0;54072:108::o;25184:208::-;25256:7;-1:-1:-1;;;;;25284:19:0;;25276:74;;;;-1:-1:-1;;;25276:74:0;;14300:2:1;25276:74:0;;;14282:21:1;14339:2;14319:18;;;14312:30;14378:34;14358:18;;;14351:62;-1:-1:-1;;;14429:18:1;;;14422:40;14479:19;;25276:74:0;14098:406:1;25276:74:0;-1:-1:-1;;;;;;25368:16:0;;;;;:9;:16;;;;;;;25184:208::o;4730:103::-;4152:6;;-1:-1:-1;;;;;4152:6:0;2883:10;4299:23;4291:68;;;;-1:-1:-1;;;4291:68:0;;;;;;;:::i;:::-;4795:30:::1;4822:1;4795:18;:30::i;:::-;4730:103::o:0;53688:124::-;4152:6;;-1:-1:-1;;;;;4152:6:0;2883:10;4299:23;4291:68;;;;-1:-1:-1;;;4291:68:0;;;;;;;:::i;:::-;53777:13:::1;:33:::0;53688:124::o;25929:104::-;25985:13;26018:7;26011:14;;;;;:::i;45729:173::-;45773:7;45818:15;45800;;:33;45796:105;;;-1:-1:-1;45843:12:0;;;45729:173::o;45796:105::-;-1:-1:-1;45889:10:0;;;45729:173::o;46408:4664::-;46474:6;;;;46473:7;46465:42;;;;-1:-1:-1;;;46465:42:0;;10063:2:1;46465:42:0;;;10045:21:1;10102:2;10082:18;;;10075:30;-1:-1:-1;;;10121:18:1;;;10114:52;10183:18;;46465:42:0;9861:346:1;46465:42:0;46538:15;46522:13;;:31;46514:66;;;;-1:-1:-1;;;46514:66:0;;16607:2:1;46514:66:0;;;16589:21:1;16646:2;16626:18;;;16619:30;-1:-1:-1;;;16665:18:1;;;16658:52;16727:18;;46514:66:0;16405:346:1;46514:66:0;46587:14;46604:13;38994:10;:17;;38906:113;46604:13;46587:30;;46646:1;46632:11;:15;46624:57;;;;-1:-1:-1;;;46624:57:0;;11236:2:1;46624:57:0;;;11218:21:1;11275:2;11255:18;;;11248:30;11314:31;11294:18;;;11287:59;11363:18;;46624:57:0;11034:353:1;46624:57:0;46720:9;;46696:20;46705:11;46696:6;:20;:::i;:::-;:33;;46688:68;;;;-1:-1:-1;;;46688:68:0;;15121:2:1;46688:68:0;;;15103:21:1;15160:2;15140:18;;;15133:30;-1:-1:-1;;;15179:18:1;;;15172:52;15241:18;;46688:68:0;14919:346:1;46688:68:0;4152:6;;-1:-1:-1;;;;;4152:6:0;46767:10;:21;46763:4302;;46810:16;:14;:16::i;:::-;46830:1;46810:21;46807:4118;;;46888:12;;46946;;47004;;47070:10;46858:19;47055:26;;;:14;:26;;;;;;;47126:33;;-1:-1:-1;;;47126:33:0;;;;;7422:51:1;;;;46888:12:0;;;;-1:-1:-1;;;;;46888:12:0;;;;46946;;;;47004;;;47055:26;;;46888:12;;47126:21;;7395:18:1;;47126:33:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;47203;;-1:-1:-1;;;47203:33:0;;47225:10;47203:33;;;7422:51:1;47097:62:0;;-1:-1:-1;47174:26:0;;-1:-1:-1;;;;;47203:21:0;;;;;7395:18:1;;47203:33:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;47280;;-1:-1:-1;;;47280:33:0;;47302:10;47280:33;;;7422:51:1;47174:62:0;;-1:-1:-1;47251:26:0;;-1:-1:-1;;;;;47280:21:0;;;;;7395:18:1;;47280:33:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;47251:62;-1:-1:-1;47410:1:0;47251:62;47367:18;47331:33;47346:18;47331:12;:33;:::i;:::-;:54;;;;:::i;:::-;:75;;;;:::i;:::-;:80;47328:2109;;47443:24;;47532:18;47490:39;47511:18;47490;:39;:::i;:::-;:60;;;;:::i;:::-;:64;47487:94;;;-1:-1:-1;47577:2:0;47487:94;47665:25;47693:31;47708:16;47693:12;:31;:::i;:::-;47788:10;47740:24;47767:32;;;:20;:32;;;;;;47838:13;;47665:59;;-1:-1:-1;47767:32:0;47823:28;;;47815:77;;;;-1:-1:-1;;;47815:77:0;;;;;;;:::i;:::-;47953:11;47940:10;;:24;;;;:::i;:::-;47927:9;:37;;47919:68;;;;-1:-1:-1;;;47919:68:0;;;;;;;:::i;:::-;48040:17;48006:30;48025:11;48006:16;:30;:::i;:::-;:51;48003:1067;;48134:11;48119:12;;:26;;;;:::i;:::-;48107:9;:38;48099:69;;;;-1:-1:-1;;;48099:69:0;;;;;;;:::i;:::-;48208:1;48191:159;48216:11;48211:1;:16;48191:159;;48279:10;48258:32;;;;:20;:32;;;;;:34;;;;;;:::i;:::-;;;;-1:-1:-1;48315:33:0;;-1:-1:-1;48325:10:0;48337;48346:1;48337:6;:10;:::i;:::-;48315:9;:33::i;:::-;48229:3;;;;:::i;:::-;;;;48191:159;;;;48003:1067;;;48461:17;48441:16;:37;48433:96;;;;-1:-1:-1;;;48433:96:0;;;;;;;:::i;:::-;48593:17;48560:30;48579:11;48560:16;:30;:::i;:::-;:50;48552:109;;;;-1:-1:-1;;;48552:109:0;;;;;;;:::i;:::-;48728:13;;48713:11;:28;;48705:77;;;;-1:-1:-1;;;48705:77:0;;;;;;;:::i;:::-;48852:11;48837:12;;:26;;;;:::i;:::-;48824:9;:39;;48816:87;;;;-1:-1:-1;;;48816:87:0;;;;;;;:::i;:::-;48944:1;48927:101;48952:11;48947:1;:16;48927:101;;48993:33;49003:10;49015;49024:1;49015:6;:10;:::i;48993:33::-;48965:3;;;;:::i;:::-;;;;48927:101;;;;48003:1067;47427:1658;;;47328:2109;;;49156:13;;49141:11;:28;;49133:77;;;;-1:-1:-1;;;49133:77:0;;;;;;;:::i;:::-;49273:11;49258:12;;:26;;;;:::i;:::-;49245:9;:39;;49237:70;;;;-1:-1:-1;;;49237:70:0;;;;;;;:::i;:::-;49340:1;49323:98;49348:11;49343:1;:16;49323:98;;49386:33;49396:10;49408;49417:1;49408:6;:10;:::i;49386:33::-;49361:3;;;;:::i;:::-;;;;49323:98;;;;47328:2109;46843:2606;;;;;;;53903:21:::1;53820:106:::0;:::o;46807:4118::-;49515:12;;49575;;49635;;49694:33;;-1:-1:-1;;;49694:33:0;;49716:10;49694:33;;;7422:51:1;49515:12:0;;;;-1:-1:-1;;;;;49515:12:0;;;;49575;;;;49635;;;49485:19;;49515:12;;49694:21;;7395:18:1;;49694:33:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;49773;;-1:-1:-1;;;49773:33:0;;49795:10;49773:33;;;7422:51:1;49665:62:0;;-1:-1:-1;49744:26:0;;-1:-1:-1;;;;;49773:21:0;;;;;7395:18:1;;49773:33:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;49852;;-1:-1:-1;;;49852:33:0;;49874:10;49852:33;;;7422:51:1;49744:62:0;;-1:-1:-1;49823:26:0;;-1:-1:-1;;;;;49852:21:0;;;;;7395:18:1;;49852:33:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;49823:62;-1:-1:-1;49969:1:0;49823:62;49905:39;49926:18;49905;:39;:::i;:::-;:60;;;;:::i;:::-;:65;49902:1008;;50103:13;;50088:11;:28;;50080:77;;;;-1:-1:-1;;;50080:77:0;;;;;;;:::i;:::-;50224:11;50209:12;;:26;;;;:::i;:::-;50196:9;:39;;50188:70;;;;-1:-1:-1;;;50188:70:0;;;;;;;:::i;:::-;50313:11;50298:12;;:26;;;;:::i;:::-;50286:9;:38;50278:86;;;;-1:-1:-1;;;50278:86:0;;;;;;;:::i;:::-;50402:1;50385:102;50410:11;50405:1;:16;50385:102;;50452:33;50462:10;50474;50483:1;50474:6;:10;:::i;50452:33::-;50423:3;;;;:::i;:::-;;;;50385:102;;;;49902:1008;;;50600:13;;50585:11;:28;;50577:77;;;;-1:-1:-1;;;50577:77:0;;;;;;;:::i;:::-;50724:11;50709:12;;:26;;;;:::i;:::-;50696:9;:39;;50688:70;;;;-1:-1:-1;;;50688:70:0;;;;;;;:::i;:::-;50798:1;50781:105;50806:11;50801:1;:16;50781:105;;50851:33;50861:10;50873;50882:1;50873:6;:10;:::i;50851:33::-;50819:3;;;;:::i;:::-;;;;50781:105;;49902:1008;49468:1457;;;;;;53903:21:::1;53820:106:::0;:::o;46763:4302::-;50973:1;50956:98;50981:11;50976:1;:16;50956:98;;51018:33;51028:10;51040;51049:1;51040:6;:10;:::i;51018:33::-;50994:3;;;;:::i;:::-;;;;50956:98;;27612:155;27707:52;2883:10;27740:8;27750;27707:18;:52::i;52675:214::-;4152:6;;-1:-1:-1;;;;;4152:6:0;2883:10;4299:23;4291:68;;;;-1:-1:-1;;;4291:68:0;;;;;;;:::i;:::-;52790:9:::1;52785:97;52805:20:::0;;::::1;52785:97;;;52864:16;52833:14;:28;52848:9;;52858:1;52848:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;52833:28:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;52833:28:0;:47;;-1:-1:-1;;52833:47:0::1;;::::0;;;::::1;::::0;;;::::1;::::0;;52827:3;::::1;::::0;::::1;:::i;:::-;;;;52785:97;;;;52675:214:::0;;;:::o;28735:328::-;28910:41;2883:10;28943:7;28910:18;:41::i;:::-;28902:103;;;;-1:-1:-1;;;28902:103:0;;;;;;;:::i;:::-;29016:39;29030:4;29036:2;29040:7;29049:5;29016:13;:39::i;53021:120::-;4152:6;;-1:-1:-1;;;;;4152:6:0;2883:10;4299:23;4291:68;;;;-1:-1:-1;;;4291:68:0;;;;;;;:::i;:::-;53108:12:::1;:31:::0;53021:120::o;53548:132::-;4152:6;;-1:-1:-1;;;;;4152:6:0;2883:10;4299:23;4291:68;;;;-1:-1:-1;;;4291:68:0;;;;;;;:::i;:::-;53641:15:::1;:37:::0;53548:132::o;44685:37::-;;;;;;;:::i;51959:406::-;30638:4;30662:16;;;:7;:16;;;;;;52032:13;;-1:-1:-1;;;;;30662:16:0;52060:76;;;;-1:-1:-1;;;52060:76:0;;17368:2:1;52060:76:0;;;17350:21:1;17407:2;17387:18;;;17380:30;17446:34;17426:18;;;17419:62;-1:-1:-1;;;17497:18:1;;;17490:45;17552:19;;52060:76:0;17166:411:1;52060:76:0;52151:28;52182:10;:8;:10::i;:::-;52151:41;;52245:1;52220:14;52214:28;:32;:149;;;;;;;;;;;;;;;;;52290:14;52306:18;:7;:16;:18::i;:::-;52326:13;52273:67;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;52214:149;52207:156;51959:406;-1:-1:-1;;;51959:406:0:o;53149:120::-;4152:6;;-1:-1:-1;;;;;4152:6:0;2883:10;4299:23;4291:68;;;;-1:-1:-1;;;4291:68:0;;;;;;;:::i;:::-;53236:12:::1;:31:::0;53149:120::o;53934:130::-;4152:6;;-1:-1:-1;;;;;4152:6:0;2883:10;4299:23;4291:68;;;;-1:-1:-1;;;4291:68:0;;;;;;;:::i;:::-;54029:33;;::::1;::::0;:13:::1;::::0;:33:::1;::::0;::::1;::::0;::::1;:::i;45908:175::-:0;45952:7;45997:15;45979;;:33;45975:107;;;-1:-1:-1;46022:12:0;;;45908:175::o;45975:107::-;-1:-1:-1;46068:12:0;;;45908:175::o;4988:201::-;4152:6;;-1:-1:-1;;;;;4152:6:0;2883:10;4299:23;4291:68;;;;-1:-1:-1;;;4291:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5077:22:0;::::1;5069:73;;;::::0;-1:-1:-1;;;5069:73:0;;10414:2:1;5069:73:0::1;::::0;::::1;10396:21:1::0;10453:2;10433:18;;;10426:30;10492:34;10472:18;;;10465:62;-1:-1:-1;;;10543:18:1;;;10536:36;10589:19;;5069:73:0::1;10212:402:1::0;5069:73:0::1;5153:28;5172:8;5153:18;:28::i;:::-;4988:201:::0;:::o;53288:120::-;4152:6;;-1:-1:-1;;;;;4152:6:0;2883:10;4299:23;4291:68;;;;-1:-1:-1;;;4291:68:0;;;;;;;:::i;:::-;53375:12:::1;:31:::0;53288:120::o;38266:224::-;38368:4;-1:-1:-1;;;;;;38392:50:0;;-1:-1:-1;;;38392:50:0;;:90;;;38446:36;38470:11;38446:23;:36::i;34555:174::-;34630:24;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;34630:29:0;-1:-1:-1;;;;;34630:29:0;;;;;;;;:24;;34684:23;34630:24;34684:14;:23::i;:::-;-1:-1:-1;;;;;34675:46:0;;;;;;;;;;;34555:174;;:::o;30867:348::-;30960:4;30662:16;;;:7;:16;;;;;;-1:-1:-1;;;;;30662:16:0;30977:73;;;;-1:-1:-1;;;30977:73:0;;12710:2:1;30977:73:0;;;12692:21:1;12749:2;12729:18;;;12722:30;12788:34;12768:18;;;12761:62;-1:-1:-1;;;12839:18:1;;;12832:42;12891:19;;30977:73:0;12508:408:1;30977:73:0;31061:13;31077:23;31092:7;31077:14;:23::i;:::-;31061:39;;31130:5;-1:-1:-1;;;;;31119:16:0;:7;-1:-1:-1;;;;;31119:16:0;;:51;;;;31163:7;-1:-1:-1;;;;;31139:31:0;:20;31151:7;31139:11;:20::i;:::-;-1:-1:-1;;;;;31139:31:0;;31119:51;:87;;;-1:-1:-1;;;;;;27959:25:0;;;27935:4;27959:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;31174:32;31111:96;30867:348;-1:-1:-1;;;;30867:348:0:o;33859:578::-;34018:4;-1:-1:-1;;;;;33991:31:0;:23;34006:7;33991:14;:23::i;:::-;-1:-1:-1;;;;;33991:31:0;;33983:85;;;;-1:-1:-1;;;33983:85:0;;16958:2:1;33983:85:0;;;16940:21:1;16997:2;16977:18;;;16970:30;17036:34;17016:18;;;17009:62;-1:-1:-1;;;17087:18:1;;;17080:39;17136:19;;33983:85:0;16756:405:1;33983:85:0;-1:-1:-1;;;;;34087:16:0;;34079:65;;;;-1:-1:-1;;;34079:65:0;;11951:2:1;34079:65:0;;;11933:21:1;11990:2;11970:18;;;11963:30;12029:34;12009:18;;;12002:62;-1:-1:-1;;;12080:18:1;;;12073:34;12124:19;;34079:65:0;11749:400:1;34079:65:0;34157:39;34178:4;34184:2;34188:7;34157:20;:39::i;:::-;34261:29;34278:1;34282:7;34261:8;:29::i;:::-;-1:-1:-1;;;;;34303:15:0;;;;;;:9;:15;;;;;:20;;34322:1;;34303:15;:20;;34322:1;;34303:20;:::i;:::-;;;;-1:-1:-1;;;;;;;34334:13:0;;;;;;:9;:13;;;;;:18;;34351:1;;34334:13;:18;;34351:1;;34334:18;:::i;:::-;;;;-1:-1:-1;;34363:16:0;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;34363:21:0;-1:-1:-1;;;;;34363:21:0;;;;;;;;;34402:27;;34363:16;;34402:27;;;;;;;33859:578;;;:::o;5349:191::-;5442:6;;;-1:-1:-1;;;;;5459:17:0;;;-1:-1:-1;;;;;;5459:17:0;;;;;;;5492:40;;5442:6;;;5459:17;5442:6;;5492:40;;5423:16;;5492:40;5412:128;5349:191;:::o;31557:110::-;31633:26;31643:2;31647:7;31633:26;;;;;;;;;;;;:9;:26::i;34871:315::-;35026:8;-1:-1:-1;;;;;35017:17:0;:5;-1:-1:-1;;;;;35017:17:0;;;35009:55;;;;-1:-1:-1;;;35009:55:0;;12356:2:1;35009:55:0;;;12338:21:1;12395:2;12375:18;;;12368:30;12434:27;12414:18;;;12407:55;12479:18;;35009:55:0;12154:349:1;35009:55:0;-1:-1:-1;;;;;35075:25:0;;;;;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;:46;;-1:-1:-1;;35075:46:0;;;;;;;;;;35137:41;;8754::1;;;35137::0;;8727:18:1;35137:41:0;;;;;;;34871:315;;;:::o;29945:::-;30102:28;30112:4;30118:2;30122:7;30102:9;:28::i;:::-;30149:48;30172:4;30178:2;30182:7;30191:5;30149:22;:48::i;:::-;30141:111;;;;-1:-1:-1;;;30141:111:0;;;;;;;:::i;45631:92::-;45691:13;45714:7;45707:14;;;;;:::i;365:723::-;421:13;642:10;638:53;;-1:-1:-1;;669:10:0;;;;;;;;;;;;-1:-1:-1;;;669:10:0;;;;;365:723::o;638:53::-;716:5;701:12;757:78;764:9;;757:78;;790:8;;;;:::i;:::-;;-1:-1:-1;813:10:0;;-1:-1:-1;821:2:0;813:10;;:::i;:::-;;;757:78;;;845:19;877:6;867:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;867:17:0;;845:39;;895:154;902:10;;895:154;;929:11;939:1;929:11;;:::i;:::-;;-1:-1:-1;998:10:0;1006:2;998:5;:10;:::i;:::-;985:24;;:2;:24;:::i;:::-;972:39;;955:6;962;955:14;;;;;;;;:::i;:::-;;;;:56;-1:-1:-1;;;;;955:56:0;;;;;;;;-1:-1:-1;1026:11:0;1035:2;1026:11;;:::i;:::-;;;895:154;;24815:305;24917:4;-1:-1:-1;;;;;;24954:40:0;;-1:-1:-1;;;24954:40:0;;:105;;-1:-1:-1;;;;;;;25011:48:0;;-1:-1:-1;;;25011:48:0;24954:105;:158;;;-1:-1:-1;;;;;;;;;;16620:40:0;;;25076:36;16511:157;51230:177;51360:45;51387:4;51393:2;51397:7;51360:26;:45::i;31894:321::-;32024:18;32030:2;32034:7;32024:5;:18::i;:::-;32075:54;32106:1;32110:2;32114:7;32123:5;32075:22;:54::i;:::-;32053:154;;;;-1:-1:-1;;;32053:154:0;;;;;;;:::i;35751:799::-;35906:4;-1:-1:-1;;;;;35927:13:0;;6690:20;6738:8;35923:620;;35963:72;;-1:-1:-1;;;35963:72:0;;-1:-1:-1;;;;;35963:36:0;;;;;:72;;2883:10;;36014:4;;36020:7;;36029:5;;35963:72;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;35963:72:0;;;;;;;;-1:-1:-1;;35963:72:0;;;;;;;;;;;;:::i;:::-;;;35959:529;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;36205:13:0;;36201:272;;36248:60;;-1:-1:-1;;;36248:60:0;;;;;;;:::i;36201:272::-;36423:6;36417:13;36408:6;36404:2;36400:15;36393:38;35959:529;-1:-1:-1;;;;;;36086:51:0;-1:-1:-1;;;36086:51:0;;-1:-1:-1;36079:58:0;;35923:620;-1:-1:-1;36527:4:0;35751:799;;;;;;:::o;39942:589::-;-1:-1:-1;;;;;40148:18:0;;40144:187;;40183:40;40215:7;41358:10;:17;;41331:24;;;;:15;:24;;;;;:44;;;41386:24;;;;;;;;;;;;41254:164;40183:40;40144:187;;;40253:2;-1:-1:-1;;;;;40245:10:0;:4;-1:-1:-1;;;;;40245:10:0;;40241:90;;40272:47;40305:4;40311:7;40272:32;:47::i;:::-;-1:-1:-1;;;;;40345:16:0;;40341:183;;40378:45;40415:7;40378:36;:45::i;40341:183::-;40451:4;-1:-1:-1;;;;;40445:10:0;:2;-1:-1:-1;;;;;40445:10:0;;40441:83;;40472:40;40500:2;40504:7;40472:27;:40::i;32551:382::-;-1:-1:-1;;;;;32631:16:0;;32623:61;;;;-1:-1:-1;;;32623:61:0;;15472:2:1;32623:61:0;;;15454:21:1;;;15491:18;;;15484:30;15550:34;15530:18;;;15523:62;15602:18;;32623:61:0;15270:356:1;32623:61:0;30638:4;30662:16;;;:7;:16;;;;;;-1:-1:-1;;;;;30662:16:0;:30;32695:58;;;;-1:-1:-1;;;32695:58:0;;11594:2:1;32695:58:0;;;11576:21:1;11633:2;11613:18;;;11606:30;11672;11652:18;;;11645:58;11720:18;;32695:58:0;11392:352:1;32695:58:0;32766:45;32795:1;32799:2;32803:7;32766:20;:45::i;:::-;-1:-1:-1;;;;;32824:13:0;;;;;;:9;:13;;;;;:18;;32841:1;;32824:13;:18;;32841:1;;32824:18;:::i;:::-;;;;-1:-1:-1;;32853:16:0;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;32853:21:0;-1:-1:-1;;;;;32853:21:0;;;;;;;;32892:33;;32853:16;;;32892:33;;32853:16;;32892:33;32551:382;;:::o;42045:988::-;42311:22;42361:1;42336:22;42353:4;42336:16;:22::i;:::-;:26;;;;:::i;:::-;42373:18;42394:26;;;:17;:26;;;;;;42311:51;;-1:-1:-1;42527:28:0;;;42523:328;;-1:-1:-1;;;;;42594:18:0;;42572:19;42594:18;;;:12;:18;;;;;;;;:34;;;;;;;;;42645:30;;;;;;:44;;;42762:30;;:17;:30;;;;;:43;;;42523:328;-1:-1:-1;42947:26:0;;;;:17;:26;;;;;;;;42940:33;;;-1:-1:-1;;;;;42991:18:0;;;;;:12;:18;;;;;:34;;;;;;;42984:41;42045:988::o;43328:1079::-;43606:10;:17;43581:22;;43606:21;;43626:1;;43606:21;:::i;:::-;43638:18;43659:24;;;:15;:24;;;;;;44032:10;:26;;43581:46;;-1:-1:-1;43659:24:0;;43581:46;;44032:26;;;;;;:::i;:::-;;;;;;;;;44010:48;;44096:11;44071:10;44082;44071:22;;;;;;;;:::i;:::-;;;;;;;;;;;;:36;;;;44176:28;;;:15;:28;;;;;;;:41;;;44348:24;;;;;44341:31;44383:10;:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;43399:1008;;;43328:1079;:::o;40832:221::-;40917:14;40934:20;40951:2;40934:16;:20::i;:::-;-1:-1:-1;;;;;40965:16:0;;;;;;;:12;:16;;;;;;;;:24;;;;;;;;:34;;;41010:26;;;:17;:26;;;;;;:35;;;;-1:-1:-1;40832:221:0:o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:631:1;78:5;108:18;149:2;141:6;138:14;135:40;;;155:18;;:::i;:::-;230:2;224:9;198:2;284:15;;-1:-1:-1;;280:24:1;;;306:2;276:33;272:42;260:55;;;330:18;;;350:22;;;327:46;324:72;;;376:18;;:::i;:::-;416:10;412:2;405:22;445:6;436:15;;475:6;467;460:22;515:3;506:6;501:3;497:16;494:25;491:45;;;532:1;529;522:12;491:45;582:6;577:3;570:4;562:6;558:17;545:44;637:1;630:4;621:6;613;609:19;605:30;598:41;;;;14:631;;;;;:::o;650:173::-;718:20;;-1:-1:-1;;;;;767:31:1;;757:42;;747:70;;813:1;810;803:12;747:70;650:173;;;:::o;828:160::-;893:20;;949:13;;942:21;932:32;;922:60;;978:1;975;968:12;993:186;1052:6;1105:2;1093:9;1084:7;1080:23;1076:32;1073:52;;;1121:1;1118;1111:12;1073:52;1144:29;1163:9;1144:29;:::i;1184:260::-;1252:6;1260;1313:2;1301:9;1292:7;1288:23;1284:32;1281:52;;;1329:1;1326;1319:12;1281:52;1352:29;1371:9;1352:29;:::i;:::-;1342:39;;1400:38;1434:2;1423:9;1419:18;1400:38;:::i;:::-;1390:48;;1184:260;;;;;:::o;1449:328::-;1526:6;1534;1542;1595:2;1583:9;1574:7;1570:23;1566:32;1563:52;;;1611:1;1608;1601:12;1563:52;1634:29;1653:9;1634:29;:::i;:::-;1624:39;;1682:38;1716:2;1705:9;1701:18;1682:38;:::i;:::-;1672:48;;1767:2;1756:9;1752:18;1739:32;1729:42;;1449:328;;;;;:::o;1782:666::-;1877:6;1885;1893;1901;1954:3;1942:9;1933:7;1929:23;1925:33;1922:53;;;1971:1;1968;1961:12;1922:53;1994:29;2013:9;1994:29;:::i;:::-;1984:39;;2042:38;2076:2;2065:9;2061:18;2042:38;:::i;:::-;2032:48;;2127:2;2116:9;2112:18;2099:32;2089:42;;2182:2;2171:9;2167:18;2154:32;2209:18;2201:6;2198:30;2195:50;;;2241:1;2238;2231:12;2195:50;2264:22;;2317:4;2309:13;;2305:27;-1:-1:-1;2295:55:1;;2346:1;2343;2336:12;2295:55;2369:73;2434:7;2429:2;2416:16;2411:2;2407;2403:11;2369:73;:::i;:::-;2359:83;;;1782:666;;;;;;;:::o;2453:254::-;2518:6;2526;2579:2;2567:9;2558:7;2554:23;2550:32;2547:52;;;2595:1;2592;2585:12;2547:52;2618:29;2637:9;2618:29;:::i;:::-;2608:39;;2666:35;2697:2;2686:9;2682:18;2666:35;:::i;2712:254::-;2780:6;2788;2841:2;2829:9;2820:7;2816:23;2812:32;2809:52;;;2857:1;2854;2847:12;2809:52;2880:29;2899:9;2880:29;:::i;:::-;2870:39;2956:2;2941:18;;;;2928:32;;-1:-1:-1;;;2712:254:1:o;2971:778::-;3064:6;3072;3080;3133:2;3121:9;3112:7;3108:23;3104:32;3101:52;;;3149:1;3146;3139:12;3101:52;3189:9;3176:23;3218:18;3259:2;3251:6;3248:14;3245:34;;;3275:1;3272;3265:12;3245:34;3313:6;3302:9;3298:22;3288:32;;3358:7;3351:4;3347:2;3343:13;3339:27;3329:55;;3380:1;3377;3370:12;3329:55;3420:2;3407:16;3446:2;3438:6;3435:14;3432:34;;;3462:1;3459;3452:12;3432:34;3517:7;3510:4;3500:6;3497:1;3493:14;3489:2;3485:23;3481:34;3478:47;3475:67;;;3538:1;3535;3528:12;3475:67;3569:4;3561:13;;;;-1:-1:-1;3593:6:1;-1:-1:-1;;3634:20:1;;3621:34;3695:4;3684:16;;3674:27;;3664:55;;3715:1;3712;3705:12;3664:55;3738:5;3728:15;;;2971:778;;;;;:::o;3754:180::-;3810:6;3863:2;3851:9;3842:7;3838:23;3834:32;3831:52;;;3879:1;3876;3869:12;3831:52;3902:26;3918:9;3902:26;:::i;3939:245::-;3997:6;4050:2;4038:9;4029:7;4025:23;4021:32;4018:52;;;4066:1;4063;4056:12;4018:52;4105:9;4092:23;4124:30;4148:5;4124:30;:::i;4189:249::-;4258:6;4311:2;4299:9;4290:7;4286:23;4282:32;4279:52;;;4327:1;4324;4317:12;4279:52;4359:9;4353:16;4378:30;4402:5;4378:30;:::i;4443:450::-;4512:6;4565:2;4553:9;4544:7;4540:23;4536:32;4533:52;;;4581:1;4578;4571:12;4533:52;4621:9;4608:23;4654:18;4646:6;4643:30;4640:50;;;4686:1;4683;4676:12;4640:50;4709:22;;4762:4;4754:13;;4750:27;-1:-1:-1;4740:55:1;;4791:1;4788;4781:12;4740:55;4814:73;4879:7;4874:2;4861:16;4856:2;4852;4848:11;4814:73;:::i;4898:180::-;4957:6;5010:2;4998:9;4989:7;4985:23;4981:32;4978:52;;;5026:1;5023;5016:12;4978:52;-1:-1:-1;5049:23:1;;4898:180;-1:-1:-1;4898:180:1:o;5083:184::-;5153:6;5206:2;5194:9;5185:7;5181:23;5177:32;5174:52;;;5222:1;5219;5212:12;5174:52;-1:-1:-1;5245:16:1;;5083:184;-1:-1:-1;5083:184:1:o;5272:257::-;5313:3;5351:5;5345:12;5378:6;5373:3;5366:19;5394:63;5450:6;5443:4;5438:3;5434:14;5427:4;5420:5;5416:16;5394:63;:::i;:::-;5511:2;5490:15;-1:-1:-1;;5486:29:1;5477:39;;;;5518:4;5473:50;;5272:257;-1:-1:-1;;5272:257:1:o;5534:1527::-;5758:3;5796:6;5790:13;5822:4;5835:51;5879:6;5874:3;5869:2;5861:6;5857:15;5835:51;:::i;:::-;5949:13;;5908:16;;;;5971:55;5949:13;5908:16;5993:15;;;5971:55;:::i;:::-;6115:13;;6048:20;;;6088:1;;6175;6197:18;;;;6250;;;;6277:93;;6355:4;6345:8;6341:19;6329:31;;6277:93;6418:2;6408:8;6405:16;6385:18;6382:40;6379:167;;;-1:-1:-1;;;6445:33:1;;6501:4;6498:1;6491:15;6531:4;6452:3;6519:17;6379:167;6562:18;6589:110;;;;6713:1;6708:328;;;;6555:481;;6589:110;-1:-1:-1;;6624:24:1;;6610:39;;6669:20;;;;-1:-1:-1;6589:110:1;;6708:328;20419:1;20412:14;;;20456:4;20443:18;;6803:1;6817:169;6831:8;6828:1;6825:15;6817:169;;;6913:14;;6898:13;;;6891:37;6956:16;;;;6848:10;;6817:169;;;6821:3;;7017:8;7010:5;7006:20;6999:27;;6555:481;-1:-1:-1;7052:3:1;;5534:1527;-1:-1:-1;;;;;;;;;;;5534:1527:1:o;7484:488::-;-1:-1:-1;;;;;7753:15:1;;;7735:34;;7805:15;;7800:2;7785:18;;7778:43;7852:2;7837:18;;7830:34;;;7900:3;7895:2;7880:18;;7873:31;;;7678:4;;7921:45;;7946:19;;7938:6;7921:45;:::i;:::-;7913:53;7484:488;-1:-1:-1;;;;;;7484:488:1:o;7977:632::-;8148:2;8200:21;;;8270:13;;8173:18;;;8292:22;;;8119:4;;8148:2;8371:15;;;;8345:2;8330:18;;;8119:4;8414:169;8428:6;8425:1;8422:13;8414:169;;;8489:13;;8477:26;;8558:15;;;;8523:12;;;;8450:1;8443:9;8414:169;;;-1:-1:-1;8600:3:1;;7977:632;-1:-1:-1;;;;;;7977:632:1:o;8806:219::-;8955:2;8944:9;8937:21;8918:4;8975:44;9015:2;9004:9;9000:18;8992:6;8975:44;:::i;9442:414::-;9644:2;9626:21;;;9683:2;9663:18;;;9656:30;9722:34;9717:2;9702:18;;9695:62;-1:-1:-1;;;9788:2:1;9773:18;;9766:48;9846:3;9831:19;;9442:414::o;10619:410::-;10821:2;10803:21;;;10860:2;10840:18;;;10833:30;10899:34;10894:2;10879:18;;10872:62;-1:-1:-1;;;10965:2:1;10950:18;;10943:44;11019:3;11004:19;;10619:410::o;12921:400::-;13123:2;13105:21;;;13162:2;13142:18;;;13135:30;13201:34;13196:2;13181:18;;13174:62;-1:-1:-1;;;13267:2:1;13252:18;;13245:34;13311:3;13296:19;;12921:400::o;13326:342::-;13528:2;13510:21;;;13567:2;13547:18;;;13540:30;-1:-1:-1;;;13601:2:1;13586:18;;13579:48;13659:2;13644:18;;13326:342::o;16044:356::-;16246:2;16228:21;;;16265:18;;;16258:30;16324:34;16319:2;16304:18;;16297:62;16391:2;16376:18;;16044:356::o;17984:413::-;18186:2;18168:21;;;18225:2;18205:18;;;18198:30;18264:34;18259:2;18244:18;;18237:62;-1:-1:-1;;;18330:2:1;18315:18;;18308:47;18387:3;18372:19;;17984:413::o;18815:399::-;19017:2;18999:21;;;19056:2;19036:18;;;19029:30;19095:34;19090:2;19075:18;;19068:62;-1:-1:-1;;;19161:2:1;19146:18;;19139:33;19204:3;19189:19;;18815:399::o;20472:128::-;20512:3;20543:1;20539:6;20536:1;20533:13;20530:39;;;20549:18;;:::i;:::-;-1:-1:-1;20585:9:1;;20472:128::o;20605:120::-;20645:1;20671;20661:35;;20676:18;;:::i;:::-;-1:-1:-1;20710:9:1;;20605:120::o;20730:168::-;20770:7;20836:1;20832;20828:6;20824:14;20821:1;20818:21;20813:1;20806:9;20799:17;20795:45;20792:71;;;20843:18;;:::i;:::-;-1:-1:-1;20883:9:1;;20730:168::o;20903:125::-;20943:4;20971:1;20968;20965:8;20962:34;;;20976:18;;:::i;:::-;-1:-1:-1;21013:9:1;;20903:125::o;21033:258::-;21105:1;21115:113;21129:6;21126:1;21123:13;21115:113;;;21205:11;;;21199:18;21186:11;;;21179:39;21151:2;21144:10;21115:113;;;21246:6;21243:1;21240:13;21237:48;;;-1:-1:-1;;21281:1:1;21263:16;;21256:27;21033:258::o;21296:380::-;21375:1;21371:12;;;;21418;;;21439:61;;21493:4;21485:6;21481:17;21471:27;;21439:61;21546:2;21538:6;21535:14;21515:18;21512:38;21509:161;;;21592:10;21587:3;21583:20;21580:1;21573:31;21627:4;21624:1;21617:15;21655:4;21652:1;21645:15;21509:161;;21296:380;;;:::o;21681:135::-;21720:3;-1:-1:-1;;21741:17:1;;21738:43;;;21761:18;;:::i;:::-;-1:-1:-1;21808:1:1;21797:13;;21681:135::o;21821:112::-;21853:1;21879;21869:35;;21884:18;;:::i;:::-;-1:-1:-1;21918:9:1;;21821:112::o;21938:127::-;21999:10;21994:3;21990:20;21987:1;21980:31;22030:4;22027:1;22020:15;22054:4;22051:1;22044:15;22070:127;22131:10;22126:3;22122:20;22119:1;22112:31;22162:4;22159:1;22152:15;22186:4;22183:1;22176:15;22202:127;22263:10;22258:3;22254:20;22251:1;22244:31;22294:4;22291:1;22284:15;22318:4;22315:1;22308:15;22334:127;22395:10;22390:3;22386:20;22383:1;22376:31;22426:4;22423:1;22416:15;22450:4;22447:1;22440:15;22466:127;22527:10;22522:3;22518:20;22515:1;22508:31;22558:4;22555:1;22548:15;22582:4;22579:1;22572:15;22598:131;-1:-1:-1;;;;;;22672:32:1;;22662:43;;22652:71;;22719:1;22716;22709:12
Swarm Source
ipfs://2cf5f3d93d3995375bdd03c4bb35aedd1ab8b389f749cf12f21f5cb4b3c8d5e6
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.