Feature Tip: Add private address tag to any address under My Name Tag !
Note: Our ether balance display is temporarily unavailable. Please check back later.
Overview
ETH Balance
Ether balance is temporarily unavailable. Please check back later.
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 8 from a total of 8 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Set Paused | 14488767 | 969 days ago | IN | 0 ETH | 0.00208866 | ||||
Set Whitelist En... | 14464516 | 973 days ago | IN | 0 ETH | 0.00060054 | ||||
Set Paused | 14464510 | 973 days ago | IN | 0 ETH | 0.00116356 | ||||
Set Mint Price | 14464489 | 973 days ago | IN | 0 ETH | 0.00077505 | ||||
Batch Mint | 14464486 | 973 days ago | IN | 0.005 ETH | 0.0042996 | ||||
Set Mint Price | 14464484 | 973 days ago | IN | 0 ETH | 0.00068427 | ||||
Set Mint Price | 14464480 | 973 days ago | IN | 0 ETH | 0.00072015 | ||||
0x60806040 | 14464475 | 973 days ago | IN | 0 ETH | 0.12137115 |
Latest 1 internal transaction
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
14464486 | 973 days ago | 0.005 ETH |
Loading...
Loading
Contract Name:
SweatyERC721v3
Compiler Version
v0.8.4+commit.c7e474f2
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-04-01 */ // Sources flattened with hardhat v2.9.1 https://hardhat.org // File contracts/oz/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 contracts/oz/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 contracts/oz/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 contracts/oz/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 contracts/oz/contracts/token/ERC721/extensions/IERC721Enumerable.sol // OpenZeppelin Contracts (last updated v4.5.0) (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); /** * @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 contracts/oz/contracts/utils/Address.sol // OpenZeppelin Contracts (last updated v4.5.0) (utils/Address.sol) pragma solidity ^0.8.1; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== * * [IMPORTANT] * ==== * You shouldn't rely on `isContract` to protect against flash loan attacks! * * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract * constructor. * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize/address.code.length, which returns 0 // for contracts in construction, since the code is only stored at the end // of the constructor execution. return account.code.length > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://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 contracts/oz/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 contracts/oz/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 contracts/oz/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 contracts/erc721a.sol // Creator: Chiru Labs pragma solidity ^0.8.4; error ApprovalCallerNotOwnerNorApproved(); error ApprovalQueryForNonexistentToken(); error ApproveToCaller(); error ApprovalToCurrentOwner(); error BalanceQueryForZeroAddress(); error MintedQueryForZeroAddress(); error BurnedQueryForZeroAddress(); error AuxQueryForZeroAddress(); error MintToZeroAddress(); error MintZeroQuantity(); error OwnerIndexOutOfBounds(); error OwnerQueryForNonexistentToken(); error TokenIndexOutOfBounds(); error TransferCallerNotOwnerNorApproved(); error TransferFromIncorrectOwner(); error TransferToNonERC721ReceiverImplementer(); error TransferToZeroAddress(); error URIQueryForNonexistentToken(); /** * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including * the Metadata extension. Built to optimize for lower gas during batch mints. * * Assumes serials are sequentially minted starting at _startTokenId() (defaults to 0, e.g. 0, 1, 2, 3..). * * Assumes that an owner cannot have more than 2**64 - 1 (max value of uint64) of supply. * * Assumes that the maximum token id cannot exceed 2**256 - 1 (max value of uint256). */ contract ERC721A is Context, ERC165, IERC721, IERC721Metadata { using Address for address; using Strings for uint256; // Compiler will pack this into a single 256bit word. struct TokenOwnership { // The address of the owner. address addr; // Keeps track of the start time of ownership with minimal overhead for tokenomics. uint64 startTimestamp; // Whether the token has been burned. bool burned; } // Compiler will pack this into a single 256bit word. struct AddressData { // Realistically, 2**64-1 is more than enough. uint64 balance; // Keeps track of mint count with minimal overhead for tokenomics. uint64 numberMinted; // Keeps track of burn count with minimal overhead for tokenomics. uint64 numberBurned; // For miscellaneous variable(s) pertaining to the address // (e.g. number of whitelist mint slots used). // If there are multiple variables, please pack them into a uint64. uint64 aux; } // The tokenId of the next token to be minted. uint256 internal _currentIndex; // The number of tokens burned. uint256 internal _burnCounter; // Token name string private _name; // Token symbol string private _symbol; // Mapping from token ID to ownership details // An empty struct value does not necessarily mean the token is unowned. See ownershipOf implementation for details. mapping(uint256 => TokenOwnership) internal _ownerships; // Mapping owner address to address data mapping(address => AddressData) private _addressData; // 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; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; _currentIndex = _startTokenId(); } /** * To change the starting tokenId, please override this function. */ function _startTokenId() internal view virtual returns (uint256) { return 0; } /** * @dev See {IERC721Enumerable-totalSupply}. * @dev Burned tokens are calculated here, use _totalMinted() if you want to count just minted tokens. */ function totalSupply() public view returns (uint256) { // Counter underflow is impossible as _burnCounter cannot be incremented // more than _currentIndex - _startTokenId() times unchecked { return _currentIndex - _burnCounter - _startTokenId(); } } /** * Returns the total amount of tokens minted in the contract. */ function _totalMinted() internal view returns (uint256) { // Counter underflow is impossible as _currentIndex does not decrement, // and it is initialized to _startTokenId() unchecked { return _currentIndex - _startTokenId(); } } /** * @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 override returns (uint256) { if (owner == address(0)) revert BalanceQueryForZeroAddress(); return uint256(_addressData[owner].balance); } /** * Returns the number of tokens minted by `owner`. */ function _numberMinted(address owner) internal view returns (uint256) { if (owner == address(0)) revert MintedQueryForZeroAddress(); return uint256(_addressData[owner].numberMinted); } /** * Returns the number of tokens burned by or on behalf of `owner`. */ function _numberBurned(address owner) internal view returns (uint256) { if (owner == address(0)) revert BurnedQueryForZeroAddress(); return uint256(_addressData[owner].numberBurned); } /** * Returns the auxillary data for `owner`. (e.g. number of whitelist mint slots used). */ function _getAux(address owner) internal view returns (uint64) { if (owner == address(0)) revert AuxQueryForZeroAddress(); return _addressData[owner].aux; } /** * Sets the auxillary data for `owner`. (e.g. number of whitelist mint slots used). * If there are multiple variables, please pack them into a uint64. */ function _setAux(address owner, uint64 aux) internal { if (owner == address(0)) revert AuxQueryForZeroAddress(); _addressData[owner].aux = aux; } /** * Gas spent here starts off proportional to the maximum mint batch size. * It gradually moves to O(1) as tokens get transferred around in the collection over time. */ function ownershipOf(uint256 tokenId) internal view returns (TokenOwnership memory) { uint256 curr = tokenId; unchecked { if (_startTokenId() <= curr && curr < _currentIndex) { TokenOwnership memory ownership = _ownerships[curr]; if (!ownership.burned) { if (ownership.addr != address(0)) { return ownership; } // Invariant: // There will always be an ownership that has an address and is not burned // before an ownership that does not have an address and is not burned. // Hence, curr will not underflow. while (true) { curr--; ownership = _ownerships[curr]; if (ownership.addr != address(0)) { return ownership; } } } } } revert OwnerQueryForNonexistentToken(); } /** * @dev See {IERC721-ownerOf}. */ function ownerOf(uint256 tokenId) public view override returns (address) { return ownershipOf(tokenId).addr; } /** * @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) { if (!_exists(tokenId)) revert URIQueryForNonexistentToken(); 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 override { address owner = ERC721A.ownerOf(tokenId); if (to == owner) revert ApprovalToCurrentOwner(); if (_msgSender() != owner && !isApprovedForAll(owner, _msgSender())) { revert ApprovalCallerNotOwnerNorApproved(); } _approve(to, tokenId, owner); } /** * @dev See {IERC721-getApproved}. */ function getApproved(uint256 tokenId) public view override returns (address) { if (!_exists(tokenId)) revert ApprovalQueryForNonexistentToken(); return _tokenApprovals[tokenId]; } /** * @dev See {IERC721-setApprovalForAll}. */ function setApprovalForAll(address operator, bool approved) public virtual override { if (operator == _msgSender()) revert ApproveToCaller(); _operatorApprovals[_msgSender()][operator] = approved; emit ApprovalForAll(_msgSender(), operator, approved); } /** * @dev See {IERC721-isApprovedForAll}. */ function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) { return _operatorApprovals[owner][operator]; } /** * @dev See {IERC721-transferFrom}. */ function transferFrom( address from, address to, uint256 tokenId ) public virtual override { _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 { _transfer(from, to, tokenId); if ( to.isContract() && !_checkContractOnERC721Received(from, to, tokenId, _data) ) { revert TransferToNonERC721ReceiverImplementer(); } } /** * @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`), */ function _exists(uint256 tokenId) internal view returns (bool) { return _startTokenId() <= tokenId && tokenId < _currentIndex && !_ownerships[tokenId].burned; } function _safeMint(address to, uint256 quantity) internal { _safeMint(to, quantity, ""); } /** * @dev Safely mints `quantity` tokens and transfers them to `to`. * * Requirements: * * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called for each safe transfer. * - `quantity` must be greater than 0. * * Emits a {Transfer} event. */ function _safeMint( address to, uint256 quantity, bytes memory _data ) internal { _mint(to, quantity, _data, true); } /** * @dev Mints `quantity` tokens and transfers them to `to`. * * Requirements: * * - `to` cannot be the zero address. * - `quantity` must be greater than 0. * * Emits a {Transfer} event. */ function _mint( address to, uint256 quantity, bytes memory _data, bool safe ) internal { uint256 startTokenId = _currentIndex; if (to == address(0)) revert MintToZeroAddress(); if (quantity == 0) revert MintZeroQuantity(); _beforeTokenTransfers(address(0), to, startTokenId, quantity); // Overflows are incredibly unrealistic. // balance or numberMinted overflow if current value of either + quantity > 1.8e19 (2**64) - 1 // updatedIndex overflows if _currentIndex + quantity > 1.2e77 (2**256) - 1 unchecked { _addressData[to].balance += uint64(quantity); _addressData[to].numberMinted += uint64(quantity); _ownerships[startTokenId].addr = to; _ownerships[startTokenId].startTimestamp = uint64(block.timestamp); uint256 updatedIndex = startTokenId; uint256 end = updatedIndex + quantity; if (safe && to.isContract()) { do { emit Transfer(address(0), to, updatedIndex); if ( !_checkContractOnERC721Received( address(0), to, updatedIndex++, _data ) ) { revert TransferToNonERC721ReceiverImplementer(); } } while (updatedIndex != end); // Reentrancy protection if (_currentIndex != startTokenId) revert(); } else { do { emit Transfer(address(0), to, updatedIndex++); } while (updatedIndex != end); } _currentIndex = updatedIndex; } _afterTokenTransfers(address(0), to, startTokenId, quantity); } /** * @dev Transfers `tokenId` from `from` to `to`. * * 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 ) private { TokenOwnership memory prevOwnership = ownershipOf(tokenId); bool isApprovedOrOwner = (_msgSender() == prevOwnership.addr || isApprovedForAll(prevOwnership.addr, _msgSender()) || getApproved(tokenId) == _msgSender()); if (!isApprovedOrOwner) revert TransferCallerNotOwnerNorApproved(); if (prevOwnership.addr != from) revert TransferFromIncorrectOwner(); if (to == address(0)) revert TransferToZeroAddress(); _beforeTokenTransfers(from, to, tokenId, 1); // Clear approvals from the previous owner _approve(address(0), tokenId, prevOwnership.addr); // Underflow of the sender's balance is impossible because we check for // ownership above and the recipient's balance can't realistically overflow. // Counter overflow is incredibly unrealistic as tokenId would have to be 2**256. unchecked { _addressData[from].balance -= 1; _addressData[to].balance += 1; _ownerships[tokenId].addr = to; _ownerships[tokenId].startTimestamp = uint64(block.timestamp); // If the ownership slot of tokenId+1 is not explicitly set, that means the transfer initiator owns it. // Set the slot of tokenId+1 explicitly in storage to maintain correctness for ownerOf(tokenId+1) calls. uint256 nextTokenId = tokenId + 1; if (_ownerships[nextTokenId].addr == address(0)) { // This will suffice for checking _exists(nextTokenId), // as a burned slot cannot contain the zero address. if (nextTokenId < _currentIndex) { _ownerships[nextTokenId].addr = prevOwnership.addr; _ownerships[nextTokenId].startTimestamp = prevOwnership .startTimestamp; } } } emit Transfer(from, to, tokenId); _afterTokenTransfers(from, to, tokenId, 1); } /** * @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 { TokenOwnership memory prevOwnership = ownershipOf(tokenId); _beforeTokenTransfers(prevOwnership.addr, address(0), tokenId, 1); // Clear approvals from the previous owner _approve(address(0), tokenId, prevOwnership.addr); // Underflow of the sender's balance is impossible because we check for // ownership above and the recipient's balance can't realistically overflow. // Counter overflow is incredibly unrealistic as tokenId would have to be 2**256. unchecked { _addressData[prevOwnership.addr].balance -= 1; _addressData[prevOwnership.addr].numberBurned += 1; // Keep track of who burned the token, and the timestamp of burning. _ownerships[tokenId].addr = prevOwnership.addr; _ownerships[tokenId].startTimestamp = uint64(block.timestamp); _ownerships[tokenId].burned = true; // If the ownership slot of tokenId+1 is not explicitly set, that means the burn initiator owns it. // Set the slot of tokenId+1 explicitly in storage to maintain correctness for ownerOf(tokenId+1) calls. uint256 nextTokenId = tokenId + 1; if (_ownerships[nextTokenId].addr == address(0)) { // This will suffice for checking _exists(nextTokenId), // as a burned slot cannot contain the zero address. if (nextTokenId < _currentIndex) { _ownerships[nextTokenId].addr = prevOwnership.addr; _ownerships[nextTokenId].startTimestamp = prevOwnership .startTimestamp; } } } emit Transfer(prevOwnership.addr, address(0), tokenId); _afterTokenTransfers(prevOwnership.addr, address(0), tokenId, 1); // Overflow not possible, as _burnCounter cannot be exceed _currentIndex times. unchecked { _burnCounter++; } } /** * @dev Approve `to` to operate on `tokenId` * * Emits a {Approval} event. */ function _approve( address to, uint256 tokenId, address owner ) private { _tokenApprovals[tokenId] = to; emit Approval(owner, to, tokenId); } /** * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target 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 _checkContractOnERC721Received( address from, address to, uint256 tokenId, bytes memory _data ) private returns (bool) { try IERC721Receiver(to).onERC721Received( _msgSender(), from, tokenId, _data ) returns (bytes4 retval) { return retval == IERC721Receiver(to).onERC721Received.selector; } catch (bytes memory reason) { if (reason.length == 0) { revert TransferToNonERC721ReceiverImplementer(); } else { assembly { revert(add(32, reason), mload(reason)) } } } } /** * @dev Hook that is called before a set of serially-ordered token ids are about to be transferred. This includes minting. * And also called before burning one token. * * startTokenId - the first token id to be transferred * quantity - the amount to be transferred * * 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, `tokenId` will be burned by `from`. * - `from` and `to` are never both zero. */ function _beforeTokenTransfers( address from, address to, uint256 startTokenId, uint256 quantity ) internal virtual {} /** * @dev Hook that is called after a set of serially-ordered token ids have been transferred. This includes * minting. * And also called after one token has been burned. * * startTokenId - the first token id to be transferred * quantity - the amount to be transferred * * Calling conditions: * * - When `from` and `to` are both non-zero, `from`'s `tokenId` has been * transferred to `to`. * - When `from` is zero, `tokenId` has been minted for `to`. * - When `to` is zero, `tokenId` has been burned by `from`. * - `from` and `to` are never both zero. */ function _afterTokenTransfers( address from, address to, uint256 startTokenId, uint256 quantity ) internal virtual {} } // File contracts/oz/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 contracts/oz/contracts/utils/math/SafeMath.sol // OpenZeppelin Contracts v4.4.1 (utils/math/SafeMath.sol) pragma solidity ^0.8.0; // CAUTION // This version of SafeMath should only be used with Solidity 0.8 or later, // because it relies on the compiler's built in overflow checks. /** * @dev Wrappers over Solidity's arithmetic operations. * * NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler * now has built in overflow checking. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } /** * @dev Returns the substraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } /** * @dev Returns the integer division of two unsigned integers, reverting on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } /** * @dev Returns the integer division of two unsigned integers, reverting with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } // File contracts/oz/contracts/utils/math/Math.sol // OpenZeppelin Contracts (last updated v4.5.0) (utils/math/Math.sol) pragma solidity ^0.8.0; /** * @dev Standard math utilities missing in the Solidity language. */ library Math { /** * @dev Returns the largest of two numbers. */ function max(uint256 a, uint256 b) internal pure returns (uint256) { return a >= b ? a : b; } /** * @dev Returns the smallest of two numbers. */ function min(uint256 a, uint256 b) internal pure returns (uint256) { return a < b ? a : b; } /** * @dev Returns the average of two numbers. The result is rounded towards * zero. */ function average(uint256 a, uint256 b) internal pure returns (uint256) { // (a + b) / 2 can overflow. return (a & b) + (a ^ b) / 2; } /** * @dev Returns the ceiling of the division of two numbers. * * This differs from standard division with `/` in that it rounds up instead * of rounding down. */ function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) { // (a + b - 1) / b can overflow on addition, so we distribute. return a / b + (a % b == 0 ? 0 : 1); } } // File contracts/whitelist.sol pragma solidity ^0.8.4; contract Whitelist is Ownable { address[] mWhitelistArr; mapping(address => bool) mWhitelist; event AddedToWhitelist(address indexed account); event RemovedFromWhitelist(address indexed account); // modifier onlyWhitelisted() { // require(isWhitelisted(msg.sender)); // _; // } function getWhitelistArraySize() public view returns (uint256) { return mWhitelistArr.length; } function getWhitelistInRange(uint256 startIndex, uint256 count) public view returns (address[] memory) { require(startIndex + 1 <= mWhitelistArr.length, "Out of bounds."); // clamp to arr size uint256 endIndex = Math.min(startIndex + count, mWhitelistArr.length); uint256 newCount = endIndex - startIndex; address[] memory filteredAddresses = new address[](newCount); uint256 filterIdx = 0; for (uint256 i = startIndex; i < endIndex; i++) { if (isWhitelisted(mWhitelistArr[i])) { filteredAddresses[filterIdx++] = mWhitelistArr[i]; } } return filteredAddresses; } function batchAddWhitelistAccount(address[] memory _addresses) public onlyOwner { for (uint256 i = 0; i < _addresses.length; i++) { mWhitelistArr.push(_addresses[i]); mWhitelist[_addresses[i]] = true; emit AddedToWhitelist(_addresses[i]); } } function batchRemoveWhitelistAccount(address[] memory _addresses) public onlyOwner { for (uint256 i = 0; i < _addresses.length; i++) { mWhitelist[_addresses[i]] = false; emit RemovedFromWhitelist(_addresses[i]); } } function isWhitelisted(address _address) public view returns (bool) { return mWhitelist[_address]; } } // File contracts/sweaty-erc721-v3.sol // Creator: SweatyNFT pragma solidity ^0.8.4; contract SweatyERC721v3 is ERC721A, Ownable, Whitelist { using SafeMath for uint256; string constant CONTRACT_IDENTIFIER = "sweaty-erc721-v3"; uint256 constant CHAIN_ETHEREUM = 1; uint256 constant CHAIN_RINKEBY = 4; uint256 constant CHAIN_POLYGON = 137; uint256 constant CHAIN_MUMBAI = 80001; uint256 constant PER_MINT_FEE_ETH = 0.0001 ether; uint256 constant PER_MINT_FEE_MATIC = 0.03 ether; uint256 constant PER_LAZY_MINT_FEE_PERCENT = 5; address constant DEVELOPER = 0x0D80C4D1546e7F85b8425c2010A5e521Dd9B9f4f; string public mContractInfoId; uint256 public mMaxSupply; uint256 public mMintPrice; string public mBaseURI; bool public mPaused = false; bool public mWhitelistEnabled = false; uint256 public mPublicMintLimit = 5; mapping(address => uint256) public mPublicBalances; uint256 public mWhitelistMintLimit = 3; mapping(address => uint256) public mWhitelistBalances; constructor( string memory _contractInfoId, string memory _name, string memory _symbol, uint256 _maxSupply, uint256 _mintPrice, string memory _metadataBaseUri ) ERC721A(_name, _symbol) { require(_maxSupply > 0, "Max supply cannot be zero."); require(_mintPrice > 0, "Mint price cannot be zero."); mContractInfoId = _contractInfoId; mMaxSupply = _maxSupply; mMintPrice = _mintPrice; mBaseURI = _metadataBaseUri; } function getContractIdentifier() public pure returns (string memory) { return CONTRACT_IDENTIFIER; } function _startTokenId() internal view virtual override returns (uint256) { return 1; } function setMintPrice(uint256 _mintPrice) external onlyOwner { mMintPrice = _mintPrice; } function setPaused(bool _paused) public onlyOwner { mPaused = _paused; } function setWhitelistEnabled(bool _enabled) public onlyOwner { mWhitelistEnabled = _enabled; } function mintOne() external payable { require(!mPaused, "Sale paused."); require( tokensMinted() + 1 <= mMaxSupply, "Insufficient tokens remaining." ); require(msg.value == mMintPrice, "Wrong value."); require( !mWhitelistEnabled || isWhitelisted(msg.sender), "Must be whitelisted." ); require( mWhitelistEnabled || mPublicBalances[msg.sender] + 1 <= mPublicMintLimit, "Public mint limit exceeded." ); require( !mWhitelistEnabled || mWhitelistBalances[msg.sender] + 1 <= mWhitelistMintLimit, "Whitelist mint limit exceeded." ); _withdraw(DEVELOPER, msg.value.mul(PER_LAZY_MINT_FEE_PERCENT).div(100)); _safeMint(msg.sender, 1); if (mWhitelistEnabled) { mWhitelistBalances[msg.sender]++; } else { mPublicBalances[msg.sender]++; } } function batchMint(uint256 _amount) external payable onlyOwner { require( tokensMinted() + _amount <= mMaxSupply, "Insufficient tokens remaining." ); uint256 fee = getOwnerBatchMintFee(_amount); require(msg.value == fee, "Wrong value."); _withdraw(DEVELOPER, fee); _safeMint(msg.sender, _amount); } function getOwnerBatchMintFee(uint256 _amount) public view returns (uint256) { uint256 id; assembly { id := chainid() } require( id == CHAIN_ETHEREUM || id == CHAIN_RINKEBY || id == CHAIN_POLYGON || id == CHAIN_MUMBAI, "Unsupported chain." ); if (id == CHAIN_ETHEREUM || id == CHAIN_RINKEBY) { return _amount.mul(PER_MINT_FEE_ETH); } if (id == CHAIN_POLYGON) { return _amount.mul(PER_MINT_FEE_MATIC); } return _amount.mul(0.00001 ether); } function tokensMinted() public view returns (uint256) { return _totalMinted(); } function _baseURI() internal view virtual override returns (string memory) { return mBaseURI; } function setBaseURI(string memory newBaseURI) public onlyOwner { mBaseURI = newBaseURI; } function _withdraw(address _address, uint256 _amount) private { (bool success, ) = _address.call{value: _amount}(""); require(success, "Transfer failed."); } function withdrawAll() public onlyOwner { uint256 balance = address(this).balance; require(balance > 0, "Balance is zero."); _withdraw(address(msg.sender), address(this).balance); } function setPublicMintLimit(uint256 _limit) public onlyOwner { mPublicMintLimit = _limit; } function setWhitelistMintLimit(uint256 _limit) public onlyOwner { mWhitelistMintLimit = _limit; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"string","name":"_contractInfoId","type":"string"},{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"uint256","name":"_maxSupply","type":"uint256"},{"internalType":"uint256","name":"_mintPrice","type":"uint256"},{"internalType":"string","name":"_metadataBaseUri","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ApprovalCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"ApprovalQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"ApprovalToCurrentOwner","type":"error"},{"inputs":[],"name":"ApproveToCaller","type":"error"},{"inputs":[],"name":"BalanceQueryForZeroAddress","type":"error"},{"inputs":[],"name":"MintToZeroAddress","type":"error"},{"inputs":[],"name":"MintZeroQuantity","type":"error"},{"inputs":[],"name":"OwnerQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"TransferCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"TransferFromIncorrectOwner","type":"error"},{"inputs":[],"name":"TransferToNonERC721ReceiverImplementer","type":"error"},{"inputs":[],"name":"TransferToZeroAddress","type":"error"},{"inputs":[],"name":"URIQueryForNonexistentToken","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"AddedToWhitelist","type":"event"},{"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":"account","type":"address"}],"name":"RemovedFromWhitelist","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_addresses","type":"address[]"}],"name":"batchAddWhitelistAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"batchMint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_addresses","type":"address[]"}],"name":"batchRemoveWhitelistAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getContractIdentifier","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"getOwnerBatchMintFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getWhitelistArraySize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"startIndex","type":"uint256"},{"internalType":"uint256","name":"count","type":"uint256"}],"name":"getWhitelistInRange","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"isWhitelisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mBaseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mContractInfoId","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mMaxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mMintPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"mPublicBalances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mPublicMintLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"mWhitelistBalances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mWhitelistEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mWhitelistMintLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mintOne","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"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":"newBaseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_mintPrice","type":"uint256"}],"name":"setMintPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_paused","type":"bool"}],"name":"setPaused","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_limit","type":"uint256"}],"name":"setPublicMintLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setWhitelistEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_limit","type":"uint256"}],"name":"setWhitelistMintLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensMinted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawAll","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040526000600f60006101000a81548160ff0219169083151502179055506000600f60016101000a81548160ff021916908315150217905550600560105560036012553480156200005157600080fd5b5060405162005351380380620053518339818101604052810190620000779190620003cb565b848481600290805190602001906200009192919062000292565b508060039080519060200190620000aa92919062000292565b50620000bb620001bb60201b60201c565b6000819055505050620000e3620000d7620001c460201b60201c565b620001cc60201b60201c565b6000831162000129576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001209062000513565b60405180910390fd5b600082116200016f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001669062000535565b60405180910390fd5b85600b90805190602001906200018792919062000292565b5082600c8190555081600d8190555080600e9080519060200190620001ae92919062000292565b505050505050506200074e565b60006001905090565b600033905090565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b828054620002a09062000607565b90600052602060002090601f016020900481019282620002c4576000855562000310565b82601f10620002df57805160ff191683800117855562000310565b8280016001018555821562000310579182015b828111156200030f578251825591602001919060010190620002f2565b5b5090506200031f919062000323565b5090565b5b808211156200033e57600081600090555060010162000324565b5090565b600062000359620003538462000580565b62000557565b9050828152602081018484840111156200037257600080fd5b6200037f848285620005d1565b509392505050565b600082601f8301126200039957600080fd5b8151620003ab84826020860162000342565b91505092915050565b600081519050620003c58162000734565b92915050565b60008060008060008060c08789031215620003e557600080fd5b600087015167ffffffffffffffff8111156200040057600080fd5b6200040e89828a0162000387565b965050602087015167ffffffffffffffff8111156200042c57600080fd5b6200043a89828a0162000387565b955050604087015167ffffffffffffffff8111156200045857600080fd5b6200046689828a0162000387565b94505060606200047989828a01620003b4565b93505060806200048c89828a01620003b4565b92505060a087015167ffffffffffffffff811115620004aa57600080fd5b620004b889828a0162000387565b9150509295509295509295565b6000620004d4601a83620005b6565b9150620004e182620006e2565b602082019050919050565b6000620004fb601a83620005b6565b915062000508826200070b565b602082019050919050565b600060208201905081810360008301526200052e81620004c5565b9050919050565b600060208201905081810360008301526200055081620004ec565b9050919050565b60006200056362000576565b90506200057182826200063d565b919050565b6000604051905090565b600067ffffffffffffffff8211156200059e576200059d620006a2565b5b620005a982620006d1565b9050602081019050919050565b600082825260208201905092915050565b6000819050919050565b60005b83811015620005f1578082015181840152602081019050620005d4565b8381111562000601576000848401525b50505050565b600060028204905060018216806200062057607f821691505b6020821081141562000637576200063662000673565b5b50919050565b6200064882620006d1565b810181811067ffffffffffffffff821117156200066a5762000669620006a2565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f4d617820737570706c792063616e6e6f74206265207a65726f2e000000000000600082015250565b7f4d696e742070726963652063616e6e6f74206265207a65726f2e000000000000600082015250565b6200073f81620005c7565b81146200074b57600080fd5b50565b614bf3806200075e6000396000f3fe6080604052600436106102675760003560e01c80636352211e1161014457806395d89b41116100b6578063c87b56dd1161007a578063c87b56dd14610902578063e985e9c51461093f578063ee2aeaa11461097c578063ef3e067c146109a7578063f2fde38b146109d0578063f4a0a528146109f957610267565b806395d89b411461081d578063a22cb46514610848578063b88d4fde14610871578063bf6bfde21461089a578063c284bdf3146108d757610267565b80638467be0d116101085780638467be0d1461072c578063853828b6146107485780638897542e1461075f5780638da5cb5b1461078a5780639234bd4f146107b557806394c1b69c146107f257610267565b80636352211e1461064557806364429ad5146106825780636de9f32b146106ad57806370a08231146106d8578063715018a61461071557610267565b80632149b8ed116101dd5780633af32abf116101a15780633af32abf1461052357806342842e0e1461056057806342a62cf1146105895780635138f304146105b4578063529ba26f146105f157806355f804b31461061c57610267565b80632149b8ed1461045457806323b872dd1461047f57806328ebe06e146104a85780632f6109f9146104d1578063381b965c146104fa57610267565b80630ced86371161022f5780630ced86371461036357806311aeed641461036d57806316c38b3c1461039857806318160ddd146103c15780631ec9d662146103ec5780631f5b37fe1461041757610267565b806301ffc9a71461026c578063052d9e7e146102a957806306fdde03146102d2578063081812fc146102fd578063095ea7b31461033a575b600080fd5b34801561027857600080fd5b50610293600480360381019061028e9190613def565b610a22565b6040516102a091906142c5565b60405180910390f35b3480156102b557600080fd5b506102d060048036038101906102cb9190613dc6565b610b04565b005b3480156102de57600080fd5b506102e7610b9d565b6040516102f491906142e0565b60405180910390f35b34801561030957600080fd5b50610324600480360381019061031f9190613e82565b610c2f565b604051610331919061423c565b60405180910390f35b34801561034657600080fd5b50610361600480360381019061035c9190613d49565b610cab565b005b61036b610db6565b005b34801561037957600080fd5b50610382611167565b60405161038f9190614482565b60405180910390f35b3480156103a457600080fd5b506103bf60048036038101906103ba9190613dc6565b61116d565b005b3480156103cd57600080fd5b506103d6611206565b6040516103e39190614482565b60405180910390f35b3480156103f857600080fd5b5061040161121d565b60405161040e9190614482565b60405180910390f35b34801561042357600080fd5b5061043e60048036038101906104399190613bde565b61122a565b60405161044b9190614482565b60405180910390f35b34801561046057600080fd5b50610469611242565b60405161047691906142e0565b60405180910390f35b34801561048b57600080fd5b506104a660048036038101906104a19190613c43565b6112d0565b005b3480156104b457600080fd5b506104cf60048036038101906104ca9190613d85565b6112e0565b005b3480156104dd57600080fd5b506104f860048036038101906104f39190613d85565b61153d565b005b34801561050657600080fd5b50610521600480360381019061051c9190613e82565b6116f7565b005b34801561052f57600080fd5b5061054a60048036038101906105459190613bde565b61177d565b60405161055791906142c5565b60405180910390f35b34801561056c57600080fd5b5061058760048036038101906105829190613c43565b6117d3565b005b34801561059557600080fd5b5061059e6117f3565b6040516105ab9190614482565b60405180910390f35b3480156105c057600080fd5b506105db60048036038101906105d69190613eab565b6117f9565b6040516105e891906142a3565b60405180910390f35b3480156105fd57600080fd5b50610606611a77565b6040516106139190614482565b60405180910390f35b34801561062857600080fd5b50610643600480360381019061063e9190613e41565b611a7d565b005b34801561065157600080fd5b5061066c60048036038101906106679190613e82565b611b13565b604051610679919061423c565b60405180910390f35b34801561068e57600080fd5b50610697611b29565b6040516106a49190614482565b60405180910390f35b3480156106b957600080fd5b506106c2611b2f565b6040516106cf9190614482565b60405180910390f35b3480156106e457600080fd5b506106ff60048036038101906106fa9190613bde565b611b3e565b60405161070c9190614482565b60405180910390f35b34801561072157600080fd5b5061072a611c0e565b005b61074660048036038101906107419190613e82565b611c96565b005b34801561075457600080fd5b5061075d611de4565b005b34801561076b57600080fd5b50610774611eb5565b60405161078191906142e0565b60405180910390f35b34801561079657600080fd5b5061079f611f43565b6040516107ac919061423c565b60405180910390f35b3480156107c157600080fd5b506107dc60048036038101906107d79190613bde565b611f6d565b6040516107e99190614482565b60405180910390f35b3480156107fe57600080fd5b50610807611f85565b60405161081491906142c5565b60405180910390f35b34801561082957600080fd5b50610832611f98565b60405161083f91906142e0565b60405180910390f35b34801561085457600080fd5b5061086f600480360381019061086a9190613d0d565b61202a565b005b34801561087d57600080fd5b5061089860048036038101906108939190613c92565b6121a2565b005b3480156108a657600080fd5b506108c160048036038101906108bc9190613e82565b61221e565b6040516108ce9190614482565b60405180910390f35b3480156108e357600080fd5b506108ec61230c565b6040516108f991906142e0565b60405180910390f35b34801561090e57600080fd5b5061092960048036038101906109249190613e82565b612349565b60405161093691906142e0565b60405180910390f35b34801561094b57600080fd5b5061096660048036038101906109619190613c07565b6123e8565b60405161097391906142c5565b60405180910390f35b34801561098857600080fd5b5061099161247c565b60405161099e91906142c5565b60405180910390f35b3480156109b357600080fd5b506109ce60048036038101906109c99190613e82565b61248f565b005b3480156109dc57600080fd5b506109f760048036038101906109f29190613bde565b612515565b005b348015610a0557600080fd5b50610a206004803603810190610a1b9190613e82565b61260d565b005b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610aed57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610afd5750610afc82612693565b5b9050919050565b610b0c6126fd565b73ffffffffffffffffffffffffffffffffffffffff16610b2a611f43565b73ffffffffffffffffffffffffffffffffffffffff1614610b80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b77906143e2565b60405180910390fd5b80600f60016101000a81548160ff02191690831515021790555050565b606060028054610bac906147a2565b80601f0160208091040260200160405190810160405280929190818152602001828054610bd8906147a2565b8015610c255780601f10610bfa57610100808354040283529160200191610c25565b820191906000526020600020905b815481529060010190602001808311610c0857829003601f168201915b5050505050905090565b6000610c3a82612705565b610c70576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610cb682611b13565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610d1e576040517f943f7b8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610d3d6126fd565b73ffffffffffffffffffffffffffffffffffffffff1614158015610d6f5750610d6d81610d686126fd565b6123e8565b155b15610da6576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610db1838383612753565b505050565b600f60009054906101000a900460ff1615610e06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dfd90614382565b60405180910390fd5b600c546001610e13611b2f565b610e1d91906145d7565b1115610e5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5590614442565b60405180910390fd5b600d543414610ea2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e99906143c2565b60405180910390fd5b600f60019054906101000a900460ff161580610ec35750610ec23361177d565b5b610f02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef990614462565b60405180910390fd5b600f60019054906101000a900460ff1680610f6a57506010546001601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f6791906145d7565b11155b610fa9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa0906143a2565b60405180910390fd5b600f60019054906101000a900460ff16158061101257506012546001601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461100f91906145d7565b11155b611051576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104890614322565b60405180910390fd5b611095730d80c4d1546e7f85b8425c2010a5e521dd9b9f4f611090606461108260053461280590919063ffffffff16565b61281b90919063ffffffff16565b612831565b6110a03360016128e2565b600f60019054906101000a900460ff161561110f57601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081548092919061110590614805565b9190505550611165565b601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081548092919061115f90614805565b91905055505b565b60125481565b6111756126fd565b73ffffffffffffffffffffffffffffffffffffffff16611193611f43565b73ffffffffffffffffffffffffffffffffffffffff16146111e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e0906143e2565b60405180910390fd5b80600f60006101000a81548160ff02191690831515021790555050565b6000611210612900565b6001546000540303905090565b6000600980549050905090565b60116020528060005260406000206000915090505481565b600e805461124f906147a2565b80601f016020809104026020016040519081016040528092919081815260200182805461127b906147a2565b80156112c85780601f1061129d576101008083540402835291602001916112c8565b820191906000526020600020905b8154815290600101906020018083116112ab57829003601f168201915b505050505081565b6112db838383612909565b505050565b6112e86126fd565b73ffffffffffffffffffffffffffffffffffffffff16611306611f43565b73ffffffffffffffffffffffffffffffffffffffff161461135c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611353906143e2565b60405180910390fd5b60005b81518110156115395760098282815181106113a3577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101519080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600a600084848151811061144a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508181815181106114dc577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff167fa850ae9193f515cbae8d35e8925bd2be26627fc91bce650b8652ed254e9cab0360405160405180910390a2808061153190614805565b91505061135f565b5050565b6115456126fd565b73ffffffffffffffffffffffffffffffffffffffff16611563611f43565b73ffffffffffffffffffffffffffffffffffffffff16146115b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b0906143e2565b60405180910390fd5b60005b81518110156116f3576000600a6000848481518110611604577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550818181518110611696577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff167fcdd2e9b91a56913d370075169cefa1602ba36be5301664f752192bb1709df75760405160405180910390a280806116eb90614805565b9150506115bc565b5050565b6116ff6126fd565b73ffffffffffffffffffffffffffffffffffffffff1661171d611f43565b73ffffffffffffffffffffffffffffffffffffffff1614611773576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176a906143e2565b60405180910390fd5b8060128190555050565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6117ee838383604051806020016040528060008152506121a2565b505050565b600c5481565b606060098054905060018461180e91906145d7565b111561184f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184690614422565b60405180910390fd5b600061186b838561186091906145d7565b600980549050612dfa565b90506000848261187b91906146b8565b905060008167ffffffffffffffff8111156118bf577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156118ed5781602001602082028036833780820191505090505b5090506000808790505b84811015611a695761196c6009828154811061193c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661177d565b15611a5657600981815481106119ab577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168383806119e290614805565b945081518110611a1b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505b8080611a6190614805565b9150506118f7565b508194505050505092915050565b60105481565b611a856126fd565b73ffffffffffffffffffffffffffffffffffffffff16611aa3611f43565b73ffffffffffffffffffffffffffffffffffffffff1614611af9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af0906143e2565b60405180910390fd5b80600e9080519060200190611b0f929190613929565b5050565b6000611b1e82612e13565b600001519050919050565b600d5481565b6000611b396130a2565b905090565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611ba6576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900467ffffffffffffffff1667ffffffffffffffff169050919050565b611c166126fd565b73ffffffffffffffffffffffffffffffffffffffff16611c34611f43565b73ffffffffffffffffffffffffffffffffffffffff1614611c8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c81906143e2565b60405180910390fd5b611c9460006130b5565b565b611c9e6126fd565b73ffffffffffffffffffffffffffffffffffffffff16611cbc611f43565b73ffffffffffffffffffffffffffffffffffffffff1614611d12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d09906143e2565b60405180910390fd5b600c5481611d1e611b2f565b611d2891906145d7565b1115611d69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d6090614442565b60405180910390fd5b6000611d748261221e565b9050803414611db8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611daf906143c2565b60405180910390fd5b611dd6730d80c4d1546e7f85b8425c2010a5e521dd9b9f4f82612831565b611de033836128e2565b5050565b611dec6126fd565b73ffffffffffffffffffffffffffffffffffffffff16611e0a611f43565b73ffffffffffffffffffffffffffffffffffffffff1614611e60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e57906143e2565b60405180910390fd5b600047905060008111611ea8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9f90614302565b60405180910390fd5b611eb23347612831565b50565b600b8054611ec2906147a2565b80601f0160208091040260200160405190810160405280929190818152602001828054611eee906147a2565b8015611f3b5780601f10611f1057610100808354040283529160200191611f3b565b820191906000526020600020905b815481529060010190602001808311611f1e57829003601f168201915b505050505081565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60136020528060005260406000206000915090505481565b600f60019054906101000a900460ff1681565b606060038054611fa7906147a2565b80601f0160208091040260200160405190810160405280929190818152602001828054611fd3906147a2565b80156120205780601f10611ff557610100808354040283529160200191612020565b820191906000526020600020905b81548152906001019060200180831161200357829003601f168201915b5050505050905090565b6120326126fd565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612097576040517fb06307db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600760006120a46126fd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166121516126fd565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161219691906142c5565b60405180910390a35050565b6121ad848484612909565b6121cc8373ffffffffffffffffffffffffffffffffffffffff1661317b565b80156121e157506121df8484848461319e565b155b15612218576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b60008046905060018114806122335750600481145b8061223e5750608981145b8061224b57506201388181145b61228a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228190614342565b60405180910390fd5b60018114806122995750600481145b156122bf576122b7655af3107a40008461280590919063ffffffff16565b915050612307565b60898114156122ea576122e2666a94d74f4300008461280590919063ffffffff16565b915050612307565b6123036509184e72a0008461280590919063ffffffff16565b9150505b919050565b60606040518060400160405280601081526020017f7377656174792d6572633732312d763300000000000000000000000000000000815250905090565b606061235482612705565b61238a576040517fa14c4b5000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006123946132fe565b90506000815114156123b557604051806020016040528060008152506123e0565b806123bf84613390565b6040516020016123d0929190614203565b6040516020818303038152906040525b915050919050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600f60009054906101000a900460ff1681565b6124976126fd565b73ffffffffffffffffffffffffffffffffffffffff166124b5611f43565b73ffffffffffffffffffffffffffffffffffffffff161461250b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612502906143e2565b60405180910390fd5b8060108190555050565b61251d6126fd565b73ffffffffffffffffffffffffffffffffffffffff1661253b611f43565b73ffffffffffffffffffffffffffffffffffffffff1614612591576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612588906143e2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612601576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f890614362565b60405180910390fd5b61260a816130b5565b50565b6126156126fd565b73ffffffffffffffffffffffffffffffffffffffff16612633611f43565b73ffffffffffffffffffffffffffffffffffffffff1614612689576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612680906143e2565b60405180910390fd5b80600d8190555050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600033905090565b600081612710612900565b1115801561271f575060005482105b801561274c575060046000838152602001908152602001600020600001601c9054906101000a900460ff16155b9050919050565b826006600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b60008183612813919061465e565b905092915050565b60008183612829919061462d565b905092915050565b60008273ffffffffffffffffffffffffffffffffffffffff168260405161285790614227565b60006040518083038185875af1925050503d8060008114612894576040519150601f19603f3d011682016040523d82523d6000602084013e612899565b606091505b50509050806128dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128d490614402565b60405180910390fd5b505050565b6128fc82826040518060200160405280600081525061353d565b5050565b60006001905090565b600061291482612e13565b90506000816000015173ffffffffffffffffffffffffffffffffffffffff1661293b6126fd565b73ffffffffffffffffffffffffffffffffffffffff16148061296e575061296d82600001516129686126fd565b6123e8565b5b806129b3575061297c6126fd565b73ffffffffffffffffffffffffffffffffffffffff1661299b84610c2f565b73ffffffffffffffffffffffffffffffffffffffff16145b9050806129ec576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff1614612a55576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612abc576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612ac9858585600161354f565b612ad96000848460000151612753565b6001600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160392506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506001600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550836004600085815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426004600085815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506000600184019050600073ffffffffffffffffffffffffffffffffffffffff166004600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415612d8a57600054811015612d895782600001516004600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082602001516004600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b5b50828473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612df38585856001613555565b5050505050565b6000818310612e095781612e0b565b825b905092915050565b612e1b6139af565b600082905080612e29612900565b11158015612e38575060005481105b1561306b576000600460008381526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201601c9054906101000a900460ff1615151515815250509050806040015161306957600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614612f4d57809250505061309d565b5b60011561306857818060019003925050600460008381526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201601c9054906101000a900460ff1615151515815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff161461306357809250505061309d565b612f4e565b5b505b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b60006130ac612900565b60005403905090565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60008373ffffffffffffffffffffffffffffffffffffffff1663150b7a026131c46126fd565b8786866040518563ffffffff1660e01b81526004016131e69493929190614257565b602060405180830381600087803b15801561320057600080fd5b505af192505050801561323157506040513d601f19601f8201168201806040525081019061322e9190613e18565b60015b6132ab573d8060008114613261576040519150601f19603f3d011682016040523d82523d6000602084013e613266565b606091505b506000815114156132a3576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b6060600e805461330d906147a2565b80601f0160208091040260200160405190810160405280929190818152602001828054613339906147a2565b80156133865780601f1061335b57610100808354040283529160200191613386565b820191906000526020600020905b81548152906001019060200180831161336957829003601f168201915b5050505050905090565b606060008214156133d8576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050613538565b600082905060005b6000821461340a5780806133f390614805565b915050600a82613403919061462d565b91506133e0565b60008167ffffffffffffffff81111561344c577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f19166020018201604052801561347e5781602001600182028036833780820191505090505b5090505b600085146135315760018261349791906146b8565b9150600a856134a6919061484e565b60306134b291906145d7565b60f81b8183815181106134ee577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a8561352a919061462d565b9450613482565b8093505050505b919050565b61354a838383600161355b565b505050565b50505050565b50505050565b600080549050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614156135c8576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000841415613603576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b613610600086838761354f565b83600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555083600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160088282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550846004600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426004600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506000819050600085820190508380156137da57506137d98773ffffffffffffffffffffffffffffffffffffffff1661317b565b5b156138a0575b818773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461384f600088848060010195508861319e565b613885576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b808214156137e057826000541461389b57600080fd5b61390c565b5b818060010192508773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4808214156138a1575b8160008190555050506139226000868387613555565b5050505050565b828054613935906147a2565b90600052602060002090601f016020900481019282613957576000855561399e565b82601f1061397057805160ff191683800117855561399e565b8280016001018555821561399e579182015b8281111561399d578251825591602001919060010190613982565b5b5090506139ab91906139f2565b5090565b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff1681526020016000151581525090565b5b80821115613a0b5760008160009055506001016139f3565b5090565b6000613a22613a1d846144c2565b61449d565b90508083825260208201905082856020860282011115613a4157600080fd5b60005b85811015613a715781613a578882613af7565b845260208401935060208301925050600181019050613a44565b5050509392505050565b6000613a8e613a89846144ee565b61449d565b905082815260208101848484011115613aa657600080fd5b613ab1848285614760565b509392505050565b6000613acc613ac78461451f565b61449d565b905082815260208101848484011115613ae457600080fd5b613aef848285614760565b509392505050565b600081359050613b0681614b61565b92915050565b600082601f830112613b1d57600080fd5b8135613b2d848260208601613a0f565b91505092915050565b600081359050613b4581614b78565b92915050565b600081359050613b5a81614b8f565b92915050565b600081519050613b6f81614b8f565b92915050565b600082601f830112613b8657600080fd5b8135613b96848260208601613a7b565b91505092915050565b600082601f830112613bb057600080fd5b8135613bc0848260208601613ab9565b91505092915050565b600081359050613bd881614ba6565b92915050565b600060208284031215613bf057600080fd5b6000613bfe84828501613af7565b91505092915050565b60008060408385031215613c1a57600080fd5b6000613c2885828601613af7565b9250506020613c3985828601613af7565b9150509250929050565b600080600060608486031215613c5857600080fd5b6000613c6686828701613af7565b9350506020613c7786828701613af7565b9250506040613c8886828701613bc9565b9150509250925092565b60008060008060808587031215613ca857600080fd5b6000613cb687828801613af7565b9450506020613cc787828801613af7565b9350506040613cd887828801613bc9565b925050606085013567ffffffffffffffff811115613cf557600080fd5b613d0187828801613b75565b91505092959194509250565b60008060408385031215613d2057600080fd5b6000613d2e85828601613af7565b9250506020613d3f85828601613b36565b9150509250929050565b60008060408385031215613d5c57600080fd5b6000613d6a85828601613af7565b9250506020613d7b85828601613bc9565b9150509250929050565b600060208284031215613d9757600080fd5b600082013567ffffffffffffffff811115613db157600080fd5b613dbd84828501613b0c565b91505092915050565b600060208284031215613dd857600080fd5b6000613de684828501613b36565b91505092915050565b600060208284031215613e0157600080fd5b6000613e0f84828501613b4b565b91505092915050565b600060208284031215613e2a57600080fd5b6000613e3884828501613b60565b91505092915050565b600060208284031215613e5357600080fd5b600082013567ffffffffffffffff811115613e6d57600080fd5b613e7984828501613b9f565b91505092915050565b600060208284031215613e9457600080fd5b6000613ea284828501613bc9565b91505092915050565b60008060408385031215613ebe57600080fd5b6000613ecc85828601613bc9565b9250506020613edd85828601613bc9565b9150509250929050565b6000613ef38383613eff565b60208301905092915050565b613f08816146ec565b82525050565b613f17816146ec565b82525050565b6000613f2882614560565b613f32818561458e565b9350613f3d83614550565b8060005b83811015613f6e578151613f558882613ee7565b9750613f6083614581565b925050600181019050613f41565b5085935050505092915050565b613f84816146fe565b82525050565b6000613f958261456b565b613f9f818561459f565b9350613faf81856020860161476f565b613fb88161493b565b840191505092915050565b6000613fce82614576565b613fd881856145bb565b9350613fe881856020860161476f565b613ff18161493b565b840191505092915050565b600061400782614576565b61401181856145cc565b935061402181856020860161476f565b80840191505092915050565b600061403a6010836145bb565b91506140458261494c565b602082019050919050565b600061405d601e836145bb565b915061406882614975565b602082019050919050565b60006140806012836145bb565b915061408b8261499e565b602082019050919050565b60006140a36026836145bb565b91506140ae826149c7565b604082019050919050565b60006140c6600c836145bb565b91506140d182614a16565b602082019050919050565b60006140e9601b836145bb565b91506140f482614a3f565b602082019050919050565b600061410c600c836145bb565b915061411782614a68565b602082019050919050565b600061412f6020836145bb565b915061413a82614a91565b602082019050919050565b60006141526000836145b0565b915061415d82614aba565b600082019050919050565b60006141756010836145bb565b915061418082614abd565b602082019050919050565b6000614198600e836145bb565b91506141a382614ae6565b602082019050919050565b60006141bb601e836145bb565b91506141c682614b0f565b602082019050919050565b60006141de6014836145bb565b91506141e982614b38565b602082019050919050565b6141fd81614756565b82525050565b600061420f8285613ffc565b915061421b8284613ffc565b91508190509392505050565b600061423282614145565b9150819050919050565b60006020820190506142516000830184613f0e565b92915050565b600060808201905061426c6000830187613f0e565b6142796020830186613f0e565b61428660408301856141f4565b81810360608301526142988184613f8a565b905095945050505050565b600060208201905081810360008301526142bd8184613f1d565b905092915050565b60006020820190506142da6000830184613f7b565b92915050565b600060208201905081810360008301526142fa8184613fc3565b905092915050565b6000602082019050818103600083015261431b8161402d565b9050919050565b6000602082019050818103600083015261433b81614050565b9050919050565b6000602082019050818103600083015261435b81614073565b9050919050565b6000602082019050818103600083015261437b81614096565b9050919050565b6000602082019050818103600083015261439b816140b9565b9050919050565b600060208201905081810360008301526143bb816140dc565b9050919050565b600060208201905081810360008301526143db816140ff565b9050919050565b600060208201905081810360008301526143fb81614122565b9050919050565b6000602082019050818103600083015261441b81614168565b9050919050565b6000602082019050818103600083015261443b8161418b565b9050919050565b6000602082019050818103600083015261445b816141ae565b9050919050565b6000602082019050818103600083015261447b816141d1565b9050919050565b600060208201905061449760008301846141f4565b92915050565b60006144a76144b8565b90506144b382826147d4565b919050565b6000604051905090565b600067ffffffffffffffff8211156144dd576144dc61490c565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156145095761450861490c565b5b6145128261493b565b9050602081019050919050565b600067ffffffffffffffff82111561453a5761453961490c565b5b6145438261493b565b9050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b60006145e282614756565b91506145ed83614756565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156146225761462161487f565b5b828201905092915050565b600061463882614756565b915061464383614756565b925082614653576146526148ae565b5b828204905092915050565b600061466982614756565b915061467483614756565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156146ad576146ac61487f565b5b828202905092915050565b60006146c382614756565b91506146ce83614756565b9250828210156146e1576146e061487f565b5b828203905092915050565b60006146f782614736565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b8381101561478d578082015181840152602081019050614772565b8381111561479c576000848401525b50505050565b600060028204905060018216806147ba57607f821691505b602082108114156147ce576147cd6148dd565b5b50919050565b6147dd8261493b565b810181811067ffffffffffffffff821117156147fc576147fb61490c565b5b80604052505050565b600061481082614756565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156148435761484261487f565b5b600182019050919050565b600061485982614756565b915061486483614756565b925082614874576148736148ae565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f42616c616e6365206973207a65726f2e00000000000000000000000000000000600082015250565b7f57686974656c697374206d696e74206c696d69742065786365656465642e0000600082015250565b7f556e737570706f7274656420636861696e2e0000000000000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f53616c65207061757365642e0000000000000000000000000000000000000000600082015250565b7f5075626c6963206d696e74206c696d69742065786365656465642e0000000000600082015250565b7f57726f6e672076616c75652e0000000000000000000000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b50565b7f5472616e73666572206661696c65642e00000000000000000000000000000000600082015250565b7f4f7574206f6620626f756e64732e000000000000000000000000000000000000600082015250565b7f496e73756666696369656e7420746f6b656e732072656d61696e696e672e0000600082015250565b7f4d7573742062652077686974656c69737465642e000000000000000000000000600082015250565b614b6a816146ec565b8114614b7557600080fd5b50565b614b81816146fe565b8114614b8c57600080fd5b50565b614b988161470a565b8114614ba357600080fd5b50565b614baf81614756565b8114614bba57600080fd5b5056fea2646970667358221220c0e6b4e740f0f78edafd934743733b7213bd7376d093edb887ee5d1d4cd85f5d64736f6c6343000804003300000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000000000000000000002710000000000000000000000000000000000000000000000000002386f26fc1000000000000000000000000000000000000000000000000000000000000000001a0000000000000000000000000000000000000000000000000000000000000002464343430613933652d616435332d313165632d626138382d31613736333964636361663400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e52656d6f746520576f726b657273000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000652454d4f54450000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003e697066733a2f2f516d596663466d74516731346e32665670615974787974505a5a6f5052583267556d78556278714c5776647a75322f6d2d39376332322f0000
Deployed Bytecode
0x6080604052600436106102675760003560e01c80636352211e1161014457806395d89b41116100b6578063c87b56dd1161007a578063c87b56dd14610902578063e985e9c51461093f578063ee2aeaa11461097c578063ef3e067c146109a7578063f2fde38b146109d0578063f4a0a528146109f957610267565b806395d89b411461081d578063a22cb46514610848578063b88d4fde14610871578063bf6bfde21461089a578063c284bdf3146108d757610267565b80638467be0d116101085780638467be0d1461072c578063853828b6146107485780638897542e1461075f5780638da5cb5b1461078a5780639234bd4f146107b557806394c1b69c146107f257610267565b80636352211e1461064557806364429ad5146106825780636de9f32b146106ad57806370a08231146106d8578063715018a61461071557610267565b80632149b8ed116101dd5780633af32abf116101a15780633af32abf1461052357806342842e0e1461056057806342a62cf1146105895780635138f304146105b4578063529ba26f146105f157806355f804b31461061c57610267565b80632149b8ed1461045457806323b872dd1461047f57806328ebe06e146104a85780632f6109f9146104d1578063381b965c146104fa57610267565b80630ced86371161022f5780630ced86371461036357806311aeed641461036d57806316c38b3c1461039857806318160ddd146103c15780631ec9d662146103ec5780631f5b37fe1461041757610267565b806301ffc9a71461026c578063052d9e7e146102a957806306fdde03146102d2578063081812fc146102fd578063095ea7b31461033a575b600080fd5b34801561027857600080fd5b50610293600480360381019061028e9190613def565b610a22565b6040516102a091906142c5565b60405180910390f35b3480156102b557600080fd5b506102d060048036038101906102cb9190613dc6565b610b04565b005b3480156102de57600080fd5b506102e7610b9d565b6040516102f491906142e0565b60405180910390f35b34801561030957600080fd5b50610324600480360381019061031f9190613e82565b610c2f565b604051610331919061423c565b60405180910390f35b34801561034657600080fd5b50610361600480360381019061035c9190613d49565b610cab565b005b61036b610db6565b005b34801561037957600080fd5b50610382611167565b60405161038f9190614482565b60405180910390f35b3480156103a457600080fd5b506103bf60048036038101906103ba9190613dc6565b61116d565b005b3480156103cd57600080fd5b506103d6611206565b6040516103e39190614482565b60405180910390f35b3480156103f857600080fd5b5061040161121d565b60405161040e9190614482565b60405180910390f35b34801561042357600080fd5b5061043e60048036038101906104399190613bde565b61122a565b60405161044b9190614482565b60405180910390f35b34801561046057600080fd5b50610469611242565b60405161047691906142e0565b60405180910390f35b34801561048b57600080fd5b506104a660048036038101906104a19190613c43565b6112d0565b005b3480156104b457600080fd5b506104cf60048036038101906104ca9190613d85565b6112e0565b005b3480156104dd57600080fd5b506104f860048036038101906104f39190613d85565b61153d565b005b34801561050657600080fd5b50610521600480360381019061051c9190613e82565b6116f7565b005b34801561052f57600080fd5b5061054a60048036038101906105459190613bde565b61177d565b60405161055791906142c5565b60405180910390f35b34801561056c57600080fd5b5061058760048036038101906105829190613c43565b6117d3565b005b34801561059557600080fd5b5061059e6117f3565b6040516105ab9190614482565b60405180910390f35b3480156105c057600080fd5b506105db60048036038101906105d69190613eab565b6117f9565b6040516105e891906142a3565b60405180910390f35b3480156105fd57600080fd5b50610606611a77565b6040516106139190614482565b60405180910390f35b34801561062857600080fd5b50610643600480360381019061063e9190613e41565b611a7d565b005b34801561065157600080fd5b5061066c60048036038101906106679190613e82565b611b13565b604051610679919061423c565b60405180910390f35b34801561068e57600080fd5b50610697611b29565b6040516106a49190614482565b60405180910390f35b3480156106b957600080fd5b506106c2611b2f565b6040516106cf9190614482565b60405180910390f35b3480156106e457600080fd5b506106ff60048036038101906106fa9190613bde565b611b3e565b60405161070c9190614482565b60405180910390f35b34801561072157600080fd5b5061072a611c0e565b005b61074660048036038101906107419190613e82565b611c96565b005b34801561075457600080fd5b5061075d611de4565b005b34801561076b57600080fd5b50610774611eb5565b60405161078191906142e0565b60405180910390f35b34801561079657600080fd5b5061079f611f43565b6040516107ac919061423c565b60405180910390f35b3480156107c157600080fd5b506107dc60048036038101906107d79190613bde565b611f6d565b6040516107e99190614482565b60405180910390f35b3480156107fe57600080fd5b50610807611f85565b60405161081491906142c5565b60405180910390f35b34801561082957600080fd5b50610832611f98565b60405161083f91906142e0565b60405180910390f35b34801561085457600080fd5b5061086f600480360381019061086a9190613d0d565b61202a565b005b34801561087d57600080fd5b5061089860048036038101906108939190613c92565b6121a2565b005b3480156108a657600080fd5b506108c160048036038101906108bc9190613e82565b61221e565b6040516108ce9190614482565b60405180910390f35b3480156108e357600080fd5b506108ec61230c565b6040516108f991906142e0565b60405180910390f35b34801561090e57600080fd5b5061092960048036038101906109249190613e82565b612349565b60405161093691906142e0565b60405180910390f35b34801561094b57600080fd5b5061096660048036038101906109619190613c07565b6123e8565b60405161097391906142c5565b60405180910390f35b34801561098857600080fd5b5061099161247c565b60405161099e91906142c5565b60405180910390f35b3480156109b357600080fd5b506109ce60048036038101906109c99190613e82565b61248f565b005b3480156109dc57600080fd5b506109f760048036038101906109f29190613bde565b612515565b005b348015610a0557600080fd5b50610a206004803603810190610a1b9190613e82565b61260d565b005b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610aed57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610afd5750610afc82612693565b5b9050919050565b610b0c6126fd565b73ffffffffffffffffffffffffffffffffffffffff16610b2a611f43565b73ffffffffffffffffffffffffffffffffffffffff1614610b80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b77906143e2565b60405180910390fd5b80600f60016101000a81548160ff02191690831515021790555050565b606060028054610bac906147a2565b80601f0160208091040260200160405190810160405280929190818152602001828054610bd8906147a2565b8015610c255780601f10610bfa57610100808354040283529160200191610c25565b820191906000526020600020905b815481529060010190602001808311610c0857829003601f168201915b5050505050905090565b6000610c3a82612705565b610c70576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610cb682611b13565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610d1e576040517f943f7b8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610d3d6126fd565b73ffffffffffffffffffffffffffffffffffffffff1614158015610d6f5750610d6d81610d686126fd565b6123e8565b155b15610da6576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610db1838383612753565b505050565b600f60009054906101000a900460ff1615610e06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dfd90614382565b60405180910390fd5b600c546001610e13611b2f565b610e1d91906145d7565b1115610e5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5590614442565b60405180910390fd5b600d543414610ea2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e99906143c2565b60405180910390fd5b600f60019054906101000a900460ff161580610ec35750610ec23361177d565b5b610f02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef990614462565b60405180910390fd5b600f60019054906101000a900460ff1680610f6a57506010546001601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f6791906145d7565b11155b610fa9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa0906143a2565b60405180910390fd5b600f60019054906101000a900460ff16158061101257506012546001601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461100f91906145d7565b11155b611051576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104890614322565b60405180910390fd5b611095730d80c4d1546e7f85b8425c2010a5e521dd9b9f4f611090606461108260053461280590919063ffffffff16565b61281b90919063ffffffff16565b612831565b6110a03360016128e2565b600f60019054906101000a900460ff161561110f57601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081548092919061110590614805565b9190505550611165565b601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081548092919061115f90614805565b91905055505b565b60125481565b6111756126fd565b73ffffffffffffffffffffffffffffffffffffffff16611193611f43565b73ffffffffffffffffffffffffffffffffffffffff16146111e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e0906143e2565b60405180910390fd5b80600f60006101000a81548160ff02191690831515021790555050565b6000611210612900565b6001546000540303905090565b6000600980549050905090565b60116020528060005260406000206000915090505481565b600e805461124f906147a2565b80601f016020809104026020016040519081016040528092919081815260200182805461127b906147a2565b80156112c85780601f1061129d576101008083540402835291602001916112c8565b820191906000526020600020905b8154815290600101906020018083116112ab57829003601f168201915b505050505081565b6112db838383612909565b505050565b6112e86126fd565b73ffffffffffffffffffffffffffffffffffffffff16611306611f43565b73ffffffffffffffffffffffffffffffffffffffff161461135c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611353906143e2565b60405180910390fd5b60005b81518110156115395760098282815181106113a3577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101519080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600a600084848151811061144a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508181815181106114dc577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff167fa850ae9193f515cbae8d35e8925bd2be26627fc91bce650b8652ed254e9cab0360405160405180910390a2808061153190614805565b91505061135f565b5050565b6115456126fd565b73ffffffffffffffffffffffffffffffffffffffff16611563611f43565b73ffffffffffffffffffffffffffffffffffffffff16146115b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b0906143e2565b60405180910390fd5b60005b81518110156116f3576000600a6000848481518110611604577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550818181518110611696577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff167fcdd2e9b91a56913d370075169cefa1602ba36be5301664f752192bb1709df75760405160405180910390a280806116eb90614805565b9150506115bc565b5050565b6116ff6126fd565b73ffffffffffffffffffffffffffffffffffffffff1661171d611f43565b73ffffffffffffffffffffffffffffffffffffffff1614611773576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176a906143e2565b60405180910390fd5b8060128190555050565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6117ee838383604051806020016040528060008152506121a2565b505050565b600c5481565b606060098054905060018461180e91906145d7565b111561184f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184690614422565b60405180910390fd5b600061186b838561186091906145d7565b600980549050612dfa565b90506000848261187b91906146b8565b905060008167ffffffffffffffff8111156118bf577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156118ed5781602001602082028036833780820191505090505b5090506000808790505b84811015611a695761196c6009828154811061193c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661177d565b15611a5657600981815481106119ab577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168383806119e290614805565b945081518110611a1b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505b8080611a6190614805565b9150506118f7565b508194505050505092915050565b60105481565b611a856126fd565b73ffffffffffffffffffffffffffffffffffffffff16611aa3611f43565b73ffffffffffffffffffffffffffffffffffffffff1614611af9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af0906143e2565b60405180910390fd5b80600e9080519060200190611b0f929190613929565b5050565b6000611b1e82612e13565b600001519050919050565b600d5481565b6000611b396130a2565b905090565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611ba6576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900467ffffffffffffffff1667ffffffffffffffff169050919050565b611c166126fd565b73ffffffffffffffffffffffffffffffffffffffff16611c34611f43565b73ffffffffffffffffffffffffffffffffffffffff1614611c8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c81906143e2565b60405180910390fd5b611c9460006130b5565b565b611c9e6126fd565b73ffffffffffffffffffffffffffffffffffffffff16611cbc611f43565b73ffffffffffffffffffffffffffffffffffffffff1614611d12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d09906143e2565b60405180910390fd5b600c5481611d1e611b2f565b611d2891906145d7565b1115611d69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d6090614442565b60405180910390fd5b6000611d748261221e565b9050803414611db8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611daf906143c2565b60405180910390fd5b611dd6730d80c4d1546e7f85b8425c2010a5e521dd9b9f4f82612831565b611de033836128e2565b5050565b611dec6126fd565b73ffffffffffffffffffffffffffffffffffffffff16611e0a611f43565b73ffffffffffffffffffffffffffffffffffffffff1614611e60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e57906143e2565b60405180910390fd5b600047905060008111611ea8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9f90614302565b60405180910390fd5b611eb23347612831565b50565b600b8054611ec2906147a2565b80601f0160208091040260200160405190810160405280929190818152602001828054611eee906147a2565b8015611f3b5780601f10611f1057610100808354040283529160200191611f3b565b820191906000526020600020905b815481529060010190602001808311611f1e57829003601f168201915b505050505081565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60136020528060005260406000206000915090505481565b600f60019054906101000a900460ff1681565b606060038054611fa7906147a2565b80601f0160208091040260200160405190810160405280929190818152602001828054611fd3906147a2565b80156120205780601f10611ff557610100808354040283529160200191612020565b820191906000526020600020905b81548152906001019060200180831161200357829003601f168201915b5050505050905090565b6120326126fd565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612097576040517fb06307db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600760006120a46126fd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166121516126fd565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161219691906142c5565b60405180910390a35050565b6121ad848484612909565b6121cc8373ffffffffffffffffffffffffffffffffffffffff1661317b565b80156121e157506121df8484848461319e565b155b15612218576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b60008046905060018114806122335750600481145b8061223e5750608981145b8061224b57506201388181145b61228a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228190614342565b60405180910390fd5b60018114806122995750600481145b156122bf576122b7655af3107a40008461280590919063ffffffff16565b915050612307565b60898114156122ea576122e2666a94d74f4300008461280590919063ffffffff16565b915050612307565b6123036509184e72a0008461280590919063ffffffff16565b9150505b919050565b60606040518060400160405280601081526020017f7377656174792d6572633732312d763300000000000000000000000000000000815250905090565b606061235482612705565b61238a576040517fa14c4b5000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006123946132fe565b90506000815114156123b557604051806020016040528060008152506123e0565b806123bf84613390565b6040516020016123d0929190614203565b6040516020818303038152906040525b915050919050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600f60009054906101000a900460ff1681565b6124976126fd565b73ffffffffffffffffffffffffffffffffffffffff166124b5611f43565b73ffffffffffffffffffffffffffffffffffffffff161461250b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612502906143e2565b60405180910390fd5b8060108190555050565b61251d6126fd565b73ffffffffffffffffffffffffffffffffffffffff1661253b611f43565b73ffffffffffffffffffffffffffffffffffffffff1614612591576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612588906143e2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612601576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f890614362565b60405180910390fd5b61260a816130b5565b50565b6126156126fd565b73ffffffffffffffffffffffffffffffffffffffff16612633611f43565b73ffffffffffffffffffffffffffffffffffffffff1614612689576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612680906143e2565b60405180910390fd5b80600d8190555050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600033905090565b600081612710612900565b1115801561271f575060005482105b801561274c575060046000838152602001908152602001600020600001601c9054906101000a900460ff16155b9050919050565b826006600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b60008183612813919061465e565b905092915050565b60008183612829919061462d565b905092915050565b60008273ffffffffffffffffffffffffffffffffffffffff168260405161285790614227565b60006040518083038185875af1925050503d8060008114612894576040519150601f19603f3d011682016040523d82523d6000602084013e612899565b606091505b50509050806128dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128d490614402565b60405180910390fd5b505050565b6128fc82826040518060200160405280600081525061353d565b5050565b60006001905090565b600061291482612e13565b90506000816000015173ffffffffffffffffffffffffffffffffffffffff1661293b6126fd565b73ffffffffffffffffffffffffffffffffffffffff16148061296e575061296d82600001516129686126fd565b6123e8565b5b806129b3575061297c6126fd565b73ffffffffffffffffffffffffffffffffffffffff1661299b84610c2f565b73ffffffffffffffffffffffffffffffffffffffff16145b9050806129ec576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff1614612a55576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612abc576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612ac9858585600161354f565b612ad96000848460000151612753565b6001600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160392506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506001600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550836004600085815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426004600085815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506000600184019050600073ffffffffffffffffffffffffffffffffffffffff166004600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415612d8a57600054811015612d895782600001516004600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082602001516004600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b5b50828473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612df38585856001613555565b5050505050565b6000818310612e095781612e0b565b825b905092915050565b612e1b6139af565b600082905080612e29612900565b11158015612e38575060005481105b1561306b576000600460008381526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201601c9054906101000a900460ff1615151515815250509050806040015161306957600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614612f4d57809250505061309d565b5b60011561306857818060019003925050600460008381526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201601c9054906101000a900460ff1615151515815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff161461306357809250505061309d565b612f4e565b5b505b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b60006130ac612900565b60005403905090565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60008373ffffffffffffffffffffffffffffffffffffffff1663150b7a026131c46126fd565b8786866040518563ffffffff1660e01b81526004016131e69493929190614257565b602060405180830381600087803b15801561320057600080fd5b505af192505050801561323157506040513d601f19601f8201168201806040525081019061322e9190613e18565b60015b6132ab573d8060008114613261576040519150601f19603f3d011682016040523d82523d6000602084013e613266565b606091505b506000815114156132a3576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b6060600e805461330d906147a2565b80601f0160208091040260200160405190810160405280929190818152602001828054613339906147a2565b80156133865780601f1061335b57610100808354040283529160200191613386565b820191906000526020600020905b81548152906001019060200180831161336957829003601f168201915b5050505050905090565b606060008214156133d8576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050613538565b600082905060005b6000821461340a5780806133f390614805565b915050600a82613403919061462d565b91506133e0565b60008167ffffffffffffffff81111561344c577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f19166020018201604052801561347e5781602001600182028036833780820191505090505b5090505b600085146135315760018261349791906146b8565b9150600a856134a6919061484e565b60306134b291906145d7565b60f81b8183815181106134ee577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a8561352a919061462d565b9450613482565b8093505050505b919050565b61354a838383600161355b565b505050565b50505050565b50505050565b600080549050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614156135c8576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000841415613603576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b613610600086838761354f565b83600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555083600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160088282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550846004600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426004600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506000819050600085820190508380156137da57506137d98773ffffffffffffffffffffffffffffffffffffffff1661317b565b5b156138a0575b818773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461384f600088848060010195508861319e565b613885576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b808214156137e057826000541461389b57600080fd5b61390c565b5b818060010192508773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4808214156138a1575b8160008190555050506139226000868387613555565b5050505050565b828054613935906147a2565b90600052602060002090601f016020900481019282613957576000855561399e565b82601f1061397057805160ff191683800117855561399e565b8280016001018555821561399e579182015b8281111561399d578251825591602001919060010190613982565b5b5090506139ab91906139f2565b5090565b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff1681526020016000151581525090565b5b80821115613a0b5760008160009055506001016139f3565b5090565b6000613a22613a1d846144c2565b61449d565b90508083825260208201905082856020860282011115613a4157600080fd5b60005b85811015613a715781613a578882613af7565b845260208401935060208301925050600181019050613a44565b5050509392505050565b6000613a8e613a89846144ee565b61449d565b905082815260208101848484011115613aa657600080fd5b613ab1848285614760565b509392505050565b6000613acc613ac78461451f565b61449d565b905082815260208101848484011115613ae457600080fd5b613aef848285614760565b509392505050565b600081359050613b0681614b61565b92915050565b600082601f830112613b1d57600080fd5b8135613b2d848260208601613a0f565b91505092915050565b600081359050613b4581614b78565b92915050565b600081359050613b5a81614b8f565b92915050565b600081519050613b6f81614b8f565b92915050565b600082601f830112613b8657600080fd5b8135613b96848260208601613a7b565b91505092915050565b600082601f830112613bb057600080fd5b8135613bc0848260208601613ab9565b91505092915050565b600081359050613bd881614ba6565b92915050565b600060208284031215613bf057600080fd5b6000613bfe84828501613af7565b91505092915050565b60008060408385031215613c1a57600080fd5b6000613c2885828601613af7565b9250506020613c3985828601613af7565b9150509250929050565b600080600060608486031215613c5857600080fd5b6000613c6686828701613af7565b9350506020613c7786828701613af7565b9250506040613c8886828701613bc9565b9150509250925092565b60008060008060808587031215613ca857600080fd5b6000613cb687828801613af7565b9450506020613cc787828801613af7565b9350506040613cd887828801613bc9565b925050606085013567ffffffffffffffff811115613cf557600080fd5b613d0187828801613b75565b91505092959194509250565b60008060408385031215613d2057600080fd5b6000613d2e85828601613af7565b9250506020613d3f85828601613b36565b9150509250929050565b60008060408385031215613d5c57600080fd5b6000613d6a85828601613af7565b9250506020613d7b85828601613bc9565b9150509250929050565b600060208284031215613d9757600080fd5b600082013567ffffffffffffffff811115613db157600080fd5b613dbd84828501613b0c565b91505092915050565b600060208284031215613dd857600080fd5b6000613de684828501613b36565b91505092915050565b600060208284031215613e0157600080fd5b6000613e0f84828501613b4b565b91505092915050565b600060208284031215613e2a57600080fd5b6000613e3884828501613b60565b91505092915050565b600060208284031215613e5357600080fd5b600082013567ffffffffffffffff811115613e6d57600080fd5b613e7984828501613b9f565b91505092915050565b600060208284031215613e9457600080fd5b6000613ea284828501613bc9565b91505092915050565b60008060408385031215613ebe57600080fd5b6000613ecc85828601613bc9565b9250506020613edd85828601613bc9565b9150509250929050565b6000613ef38383613eff565b60208301905092915050565b613f08816146ec565b82525050565b613f17816146ec565b82525050565b6000613f2882614560565b613f32818561458e565b9350613f3d83614550565b8060005b83811015613f6e578151613f558882613ee7565b9750613f6083614581565b925050600181019050613f41565b5085935050505092915050565b613f84816146fe565b82525050565b6000613f958261456b565b613f9f818561459f565b9350613faf81856020860161476f565b613fb88161493b565b840191505092915050565b6000613fce82614576565b613fd881856145bb565b9350613fe881856020860161476f565b613ff18161493b565b840191505092915050565b600061400782614576565b61401181856145cc565b935061402181856020860161476f565b80840191505092915050565b600061403a6010836145bb565b91506140458261494c565b602082019050919050565b600061405d601e836145bb565b915061406882614975565b602082019050919050565b60006140806012836145bb565b915061408b8261499e565b602082019050919050565b60006140a36026836145bb565b91506140ae826149c7565b604082019050919050565b60006140c6600c836145bb565b91506140d182614a16565b602082019050919050565b60006140e9601b836145bb565b91506140f482614a3f565b602082019050919050565b600061410c600c836145bb565b915061411782614a68565b602082019050919050565b600061412f6020836145bb565b915061413a82614a91565b602082019050919050565b60006141526000836145b0565b915061415d82614aba565b600082019050919050565b60006141756010836145bb565b915061418082614abd565b602082019050919050565b6000614198600e836145bb565b91506141a382614ae6565b602082019050919050565b60006141bb601e836145bb565b91506141c682614b0f565b602082019050919050565b60006141de6014836145bb565b91506141e982614b38565b602082019050919050565b6141fd81614756565b82525050565b600061420f8285613ffc565b915061421b8284613ffc565b91508190509392505050565b600061423282614145565b9150819050919050565b60006020820190506142516000830184613f0e565b92915050565b600060808201905061426c6000830187613f0e565b6142796020830186613f0e565b61428660408301856141f4565b81810360608301526142988184613f8a565b905095945050505050565b600060208201905081810360008301526142bd8184613f1d565b905092915050565b60006020820190506142da6000830184613f7b565b92915050565b600060208201905081810360008301526142fa8184613fc3565b905092915050565b6000602082019050818103600083015261431b8161402d565b9050919050565b6000602082019050818103600083015261433b81614050565b9050919050565b6000602082019050818103600083015261435b81614073565b9050919050565b6000602082019050818103600083015261437b81614096565b9050919050565b6000602082019050818103600083015261439b816140b9565b9050919050565b600060208201905081810360008301526143bb816140dc565b9050919050565b600060208201905081810360008301526143db816140ff565b9050919050565b600060208201905081810360008301526143fb81614122565b9050919050565b6000602082019050818103600083015261441b81614168565b9050919050565b6000602082019050818103600083015261443b8161418b565b9050919050565b6000602082019050818103600083015261445b816141ae565b9050919050565b6000602082019050818103600083015261447b816141d1565b9050919050565b600060208201905061449760008301846141f4565b92915050565b60006144a76144b8565b90506144b382826147d4565b919050565b6000604051905090565b600067ffffffffffffffff8211156144dd576144dc61490c565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156145095761450861490c565b5b6145128261493b565b9050602081019050919050565b600067ffffffffffffffff82111561453a5761453961490c565b5b6145438261493b565b9050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b60006145e282614756565b91506145ed83614756565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156146225761462161487f565b5b828201905092915050565b600061463882614756565b915061464383614756565b925082614653576146526148ae565b5b828204905092915050565b600061466982614756565b915061467483614756565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156146ad576146ac61487f565b5b828202905092915050565b60006146c382614756565b91506146ce83614756565b9250828210156146e1576146e061487f565b5b828203905092915050565b60006146f782614736565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b8381101561478d578082015181840152602081019050614772565b8381111561479c576000848401525b50505050565b600060028204905060018216806147ba57607f821691505b602082108114156147ce576147cd6148dd565b5b50919050565b6147dd8261493b565b810181811067ffffffffffffffff821117156147fc576147fb61490c565b5b80604052505050565b600061481082614756565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156148435761484261487f565b5b600182019050919050565b600061485982614756565b915061486483614756565b925082614874576148736148ae565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f42616c616e6365206973207a65726f2e00000000000000000000000000000000600082015250565b7f57686974656c697374206d696e74206c696d69742065786365656465642e0000600082015250565b7f556e737570706f7274656420636861696e2e0000000000000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f53616c65207061757365642e0000000000000000000000000000000000000000600082015250565b7f5075626c6963206d696e74206c696d69742065786365656465642e0000000000600082015250565b7f57726f6e672076616c75652e0000000000000000000000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b50565b7f5472616e73666572206661696c65642e00000000000000000000000000000000600082015250565b7f4f7574206f6620626f756e64732e000000000000000000000000000000000000600082015250565b7f496e73756666696369656e7420746f6b656e732072656d61696e696e672e0000600082015250565b7f4d7573742062652077686974656c69737465642e000000000000000000000000600082015250565b614b6a816146ec565b8114614b7557600080fd5b50565b614b81816146fe565b8114614b8c57600080fd5b50565b614b988161470a565b8114614ba357600080fd5b50565b614baf81614756565b8114614bba57600080fd5b5056fea2646970667358221220c0e6b4e740f0f78edafd934743733b7213bd7376d093edb887ee5d1d4cd85f5d64736f6c63430008040033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000000000000000000002710000000000000000000000000000000000000000000000000002386f26fc1000000000000000000000000000000000000000000000000000000000000000001a0000000000000000000000000000000000000000000000000000000000000002464343430613933652d616435332d313165632d626138382d31613736333964636361663400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e52656d6f746520576f726b657273000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000652454d4f54450000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003e697066733a2f2f516d596663466d74516731346e32665670615974787974505a5a6f5052583267556d78556278714c5776647a75322f6d2d39376332322f0000
-----Decoded View---------------
Arg [0] : _contractInfoId (string): d440a93e-ad53-11ec-ba88-1a7639dccaf4
Arg [1] : _name (string): Remote Workers
Arg [2] : _symbol (string): REMOTE
Arg [3] : _maxSupply (uint256): 10000
Arg [4] : _mintPrice (uint256): 10000000000000000
Arg [5] : _metadataBaseUri (string): ipfs://QmYfcFmtQg14n2fVpaYtxytPZZoPRX2gUmxUbxqLWvdzu2/m-97c22/
-----Encoded View---------------
16 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000000000000000000000000000000c0
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000120
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000160
Arg [3] : 0000000000000000000000000000000000000000000000000000000000002710
Arg [4] : 000000000000000000000000000000000000000000000000002386f26fc10000
Arg [5] : 00000000000000000000000000000000000000000000000000000000000001a0
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000024
Arg [7] : 64343430613933652d616435332d313165632d626138382d3161373633396463
Arg [8] : 6361663400000000000000000000000000000000000000000000000000000000
Arg [9] : 000000000000000000000000000000000000000000000000000000000000000e
Arg [10] : 52656d6f746520576f726b657273000000000000000000000000000000000000
Arg [11] : 0000000000000000000000000000000000000000000000000000000000000006
Arg [12] : 52454d4f54450000000000000000000000000000000000000000000000000000
Arg [13] : 000000000000000000000000000000000000000000000000000000000000003e
Arg [14] : 697066733a2f2f516d596663466d74516731346e32665670615974787974505a
Arg [15] : 5a6f5052583267556d78556278714c5776647a75322f6d2d39376332322f0000
Deployed Bytecode Sourcemap
56931:5180:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25787:355;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;58901:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29254:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30854:245;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30417:371;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;59017:1037;;;:::i;:::-;;57820:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;58807:86;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25036:303;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;55230:109;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;57761:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;57610:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31842:170;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;56078:327;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;56413:287;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;61997:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;56708:114;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32083:185;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;57546:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;55347:723;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;57719:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;61364:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29063:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;57578:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;61145:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26206:206;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;45682:103;;;;;;;;;;;;;:::i;:::-;;60062:385;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;61663:213;;;;;;;;;;;;;:::i;:::-;;57510:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;45031:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;57865:53;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;57673:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29423:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31171:319;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32339:406;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;60455:682;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;58465:114;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29598:415;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31561:214;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;57639:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;61884:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;45940:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;58696:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25787:355;25934:4;25991:25;25976:40;;;:11;:40;;;;:105;;;;26048:33;26033:48;;;:11;:48;;;;25976:105;:158;;;;26098:36;26122:11;26098:23;:36::i;:::-;25976:158;25956:178;;25787:355;;;:::o;58901:108::-;45262:12;:10;:12::i;:::-;45251:23;;:7;:5;:7::i;:::-;:23;;;45243:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;58993:8:::1;58973:17;;:28;;;;;;;;;;;;;;;;;;58901:108:::0;:::o;29254:100::-;29308:13;29341:5;29334:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29254:100;:::o;30854:245::-;30958:7;30988:16;30996:7;30988;:16::i;:::-;30983:64;;31013:34;;;;;;;;;;;;;;30983:64;31067:15;:24;31083:7;31067:24;;;;;;;;;;;;;;;;;;;;;31060:31;;30854:245;;;:::o;30417:371::-;30490:13;30506:24;30522:7;30506:15;:24::i;:::-;30490:40;;30551:5;30545:11;;:2;:11;;;30541:48;;;30565:24;;;;;;;;;;;;;;30541:48;30622:5;30606:21;;:12;:10;:12::i;:::-;:21;;;;:63;;;;;30632:37;30649:5;30656:12;:10;:12::i;:::-;30632:16;:37::i;:::-;30631:38;30606:63;30602:138;;;30693:35;;;;;;;;;;;;;;30602:138;30752:28;30761:2;30765:7;30774:5;30752:8;:28::i;:::-;30417:371;;;:::o;59017:1037::-;59073:7;;;;;;;;;;;59072:8;59064:33;;;;;;;;;;;;:::i;:::-;;;;;;;;;59152:10;;59147:1;59130:14;:12;:14::i;:::-;:18;;;;:::i;:::-;:32;;59108:112;;;;;;;;;;;;:::i;:::-;;;;;;;;;59252:10;;59239:9;:23;59231:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;59313:17;;;;;;;;;;;59312:18;:47;;;;59334:25;59348:10;59334:13;:25::i;:::-;59312:47;59290:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;59440:17;;;;;;;;;;;:89;;;;59513:16;;59508:1;59478:15;:27;59494:10;59478:27;;;;;;;;;;;;;;;;:31;;;;:::i;:::-;:51;;59440:89;59418:166;;;;;;;;;;;;:::i;:::-;;;;;;;;;59618:17;;;;;;;;;;;59617:18;:96;;;;59694:19;;59689:1;59656:18;:30;59675:10;59656:30;;;;;;;;;;;;;;;;:34;;;;:::i;:::-;:57;;59617:96;59595:176;;;;;;;;;;;;:::i;:::-;;;;;;;;;59784:71;57459:42;59805:49;59850:3;59805:40;57420:1;59805:9;:13;;:40;;;;:::i;:::-;:44;;:49;;;;:::i;:::-;59784:9;:71::i;:::-;59866:24;59876:10;59888:1;59866:9;:24::i;:::-;59907:17;;;;;;;;;;;59903:144;;;59941:18;:30;59960:10;59941:30;;;;;;;;;;;;;;;;:32;;;;;;;;;:::i;:::-;;;;;;59903:144;;;60006:15;:27;60022:10;60006:27;;;;;;;;;;;;;;;;:29;;;;;;;;;:::i;:::-;;;;;;59903:144;59017:1037::o;57820:38::-;;;;:::o;58807:86::-;45262:12;:10;:12::i;:::-;45251:23;;:7;:5;:7::i;:::-;:23;;;45243:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;58878:7:::1;58868;;:17;;;;;;;;;;;;;;;;;;58807:86:::0;:::o;25036:303::-;25080:7;25305:15;:13;:15::i;:::-;25290:12;;25274:13;;:28;:46;25267:53;;25036:303;:::o;55230:109::-;55284:7;55311:13;:20;;;;55304:27;;55230:109;:::o;57761:50::-;;;;;;;;;;;;;;;;;:::o;57610:22::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;31842:170::-;31976:28;31986:4;31992:2;31996:7;31976:9;:28::i;:::-;31842:170;;;:::o;56078:327::-;45262:12;:10;:12::i;:::-;45251:23;;:7;:5;:7::i;:::-;:23;;;45243:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;56197:9:::1;56192:206;56216:10;:17;56212:1;:21;56192:206;;;56255:13;56274:10;56285:1;56274:13;;;;;;;;;;;;;;;;;;;;;;56255:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;56331:4;56303:10;:25;56314:10;56325:1;56314:13;;;;;;;;;;;;;;;;;;;;;;56303:25;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;56372:10;56383:1;56372:13;;;;;;;;;;;;;;;;;;;;;;56355:31;;;;;;;;;;;;56235:3;;;;;:::i;:::-;;;;56192:206;;;;56078:327:::0;:::o;56413:287::-;45262:12;:10;:12::i;:::-;45251:23;;:7;:5;:7::i;:::-;:23;;;45243:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;56535:9:::1;56530:163;56554:10;:17;56550:1;:21;56530:163;;;56621:5;56593:10;:25;56604:10;56615:1;56604:13;;;;;;;;;;;;;;;;;;;;;;56593:25;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;56667:10;56678:1;56667:13;;;;;;;;;;;;;;;;;;;;;;56646:35;;;;;;;;;;;;56573:3;;;;;:::i;:::-;;;;56530:163;;;;56413:287:::0;:::o;61997:111::-;45262:12;:10;:12::i;:::-;45251:23;;:7;:5;:7::i;:::-;:23;;;45243:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;62094:6:::1;62072:19;:28;;;;61997:111:::0;:::o;56708:114::-;56770:4;56794:10;:20;56805:8;56794:20;;;;;;;;;;;;;;;;;;;;;;;;;56787:27;;56708:114;;;:::o;32083:185::-;32221:39;32238:4;32244:2;32248:7;32221:39;;;;;;;;;;;;:16;:39::i;:::-;32083:185;;;:::o;57546:25::-;;;;:::o;55347:723::-;55459:16;55519:13;:20;;;;55514:1;55501:10;:14;;;;:::i;:::-;:38;;55493:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;55599:16;55618:50;55640:5;55627:10;:18;;;;:::i;:::-;55647:13;:20;;;;55618:8;:50::i;:::-;55599:69;;55679:16;55709:10;55698:8;:21;;;;:::i;:::-;55679:40;;55730:34;55781:8;55767:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;55730:60;;55801:17;55838:9;55850:10;55838:22;;55833:195;55866:8;55862:1;:12;55833:195;;;55900:31;55914:13;55928:1;55914:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;55900:13;:31::i;:::-;55896:121;;;55985:13;55999:1;55985:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;55952:17;55970:11;;;;;:::i;:::-;;;55952:30;;;;;;;;;;;;;;;;;;;;;:49;;;;;;;;;;;55896:121;55876:3;;;;;:::i;:::-;;;;55833:195;;;;56045:17;56038:24;;;;;;55347:723;;;;:::o;57719:35::-;;;;:::o;61364:103::-;45262:12;:10;:12::i;:::-;45251:23;;:7;:5;:7::i;:::-;:23;;;45243:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;61449:10:::1;61438:8;:21;;;;;;;;;;;;:::i;:::-;;61364:103:::0;:::o;29063:124::-;29127:7;29154:20;29166:7;29154:11;:20::i;:::-;:25;;;29147:32;;29063:124;;;:::o;57578:25::-;;;;:::o;61145:94::-;61190:7;61217:14;:12;:14::i;:::-;61210:21;;61145:94;:::o;26206:206::-;26270:7;26311:1;26294:19;;:5;:19;;;26290:60;;;26322:28;;;;;;;;;;;;;;26290:60;26376:12;:19;26389:5;26376:19;;;;;;;;;;;;;;;:27;;;;;;;;;;;;26368:36;;26361:43;;26206:206;;;:::o;45682:103::-;45262:12;:10;:12::i;:::-;45251:23;;:7;:5;:7::i;:::-;:23;;;45243:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;45747:30:::1;45774:1;45747:18;:30::i;:::-;45682:103::o:0;60062:385::-;45262:12;:10;:12::i;:::-;45251:23;;:7;:5;:7::i;:::-;:23;;;45243:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;60186:10:::1;;60175:7;60158:14;:12;:14::i;:::-;:24;;;;:::i;:::-;:38;;60136:118;;;;;;;;;;;;:::i;:::-;;;;;;;;;60265:11;60279:29;60300:7;60279:20;:29::i;:::-;60265:43;;60340:3;60327:9;:16;60319:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;60373:25;57459:42;60394:3;60373:9;:25::i;:::-;60409:30;60419:10;60431:7;60409:9;:30::i;:::-;45322:1;60062:385:::0;:::o;61663:213::-;45262:12;:10;:12::i;:::-;45251:23;;:7;:5;:7::i;:::-;:23;;;45243:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;61714:15:::1;61732:21;61714:39;;61782:1;61772:7;:11;61764:40;;;;;;;;;;;;:::i;:::-;;;;;;;;;61815:53;61833:10;61846:21;61815:9;:53::i;:::-;45322:1;61663:213::o:0;57510:29::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;45031:87::-;45077:7;45104:6;;;;;;;;;;;45097:13;;45031:87;:::o;57865:53::-;;;;;;;;;;;;;;;;;:::o;57673:37::-;;;;;;;;;;;;;:::o;29423:104::-;29479:13;29512:7;29505:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29423:104;:::o;31171:319::-;31314:12;:10;:12::i;:::-;31302:24;;:8;:24;;;31298:54;;;31335:17;;;;;;;;;;;;;;31298:54;31410:8;31365:18;:32;31384:12;:10;:12::i;:::-;31365:32;;;;;;;;;;;;;;;:42;31398:8;31365:42;;;;;;;;;;;;;;;;:53;;;;;;;;;;;;;;;;;;31463:8;31434:48;;31449:12;:10;:12::i;:::-;31434:48;;;31473:8;31434:48;;;;;;:::i;:::-;;;;;;;;31171:319;;:::o;32339:406::-;32506:28;32516:4;32522:2;32526:7;32506:9;:28::i;:::-;32563:15;:2;:13;;;:15::i;:::-;:89;;;;;32596:56;32627:4;32633:2;32637:7;32646:5;32596:30;:56::i;:::-;32595:57;32563:89;32545:193;;;32686:40;;;;;;;;;;;;;;32545:193;32339:406;;;;:::o;60455:682::-;60550:7;60575:10;60626:9;60620:15;;57127:1;60678:2;:20;:60;;;;57168:1;60719:2;:19;60678:60;:100;;;;57209:3;60759:2;:19;60678:100;:139;;;;57251:5;60799:2;:18;60678:139;60656:207;;;;;;;;;;;;:::i;:::-;;;;;;;;;57127:1;60878:2;:20;:43;;;;57168:1;60902:2;:19;60878:43;60874:112;;;60945:29;57301:12;60945:7;:11;;:29;;;;:::i;:::-;60938:36;;;;;60874:112;57209:3;61000:2;:19;60996:90;;;61043:31;57358:10;61043:7;:11;;:31;;;;:::i;:::-;61036:38;;;;;60996:90;61103:26;61115:13;61103:7;:11;;:26;;;;:::i;:::-;61096:33;;;60455:682;;;;:::o;58465:114::-;58519:13;58552:19;;;;;;;;;;;;;;;;;58545:26;;58465:114;:::o;29598:415::-;29716:13;29752:16;29760:7;29752;:16::i;:::-;29747:59;;29777:29;;;;;;;;;;;;;;29747:59;29819:21;29843:10;:8;:10::i;:::-;29819:34;;29909:1;29890:7;29884:21;:26;;:121;;;;;;;;;;;;;;;;;29954:7;29963:18;:7;:16;:18::i;:::-;29937:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;29884:121;29864:141;;;29598:415;;;:::o;31561:214::-;31703:4;31732:18;:25;31751:5;31732:25;;;;;;;;;;;;;;;:35;31758:8;31732:35;;;;;;;;;;;;;;;;;;;;;;;;;31725:42;;31561:214;;;;:::o;57639:27::-;;;;;;;;;;;;;:::o;61884:105::-;45262:12;:10;:12::i;:::-;45251:23;;:7;:5;:7::i;:::-;:23;;;45243:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;61975:6:::1;61956:16;:25;;;;61884:105:::0;:::o;45940:201::-;45262:12;:10;:12::i;:::-;45251:23;;:7;:5;:7::i;:::-;:23;;;45243:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;46049:1:::1;46029:22;;:8;:22;;;;46021:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;46105:28;46124:8;46105:18;:28::i;:::-;45940:201:::0;:::o;58696:103::-;45262:12;:10;:12::i;:::-;45251:23;;:7;:5;:7::i;:::-;:23;;;45243:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;58781:10:::1;58768;:23;;;;58696:103:::0;:::o;21142:157::-;21227:4;21266:25;21251:40;;;:11;:40;;;;21244:47;;21142:157;;;:::o;17941:98::-;17994:7;18021:10;18014:17;;17941:98;:::o;33000:213::-;33057:4;33113:7;33094:15;:13;:15::i;:::-;:26;;:66;;;;;33147:13;;33137:7;:23;33094:66;:111;;;;;33178:11;:20;33190:7;33178:20;;;;;;;;;;;:27;;;;;;;;;;;;33177:28;33094:111;33074:131;;33000:213;;;:::o;40880:196::-;41022:2;40995:15;:24;41011:7;40995:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;41060:7;41056:2;41040:28;;41049:5;41040:28;;;;;;;;;;;;40880:196;;;:::o;50099:98::-;50157:7;50188:1;50184;:5;;;;:::i;:::-;50177:12;;50099:98;;;;:::o;50498:::-;50556:7;50587:1;50583;:5;;;;:::i;:::-;50576:12;;50498:98;;;;:::o;61475:180::-;61549:12;61567:8;:13;;61588:7;61567:33;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;61548:52;;;61619:7;61611:36;;;;;;;;;;;;:::i;:::-;;;;;;;;;61475:180;;;:::o;33221:104::-;33290:27;33300:2;33304:8;33290:27;;;;;;;;;;;;:9;:27::i;:::-;33221:104;;:::o;58587:101::-;58652:7;58679:1;58672:8;;58587:101;:::o;36330:2138::-;36445:35;36483:20;36495:7;36483:11;:20::i;:::-;36445:58;;36516:22;36558:13;:18;;;36542:34;;:12;:10;:12::i;:::-;:34;;;:101;;;;36593:50;36610:13;:18;;;36630:12;:10;:12::i;:::-;36593:16;:50::i;:::-;36542:101;:154;;;;36684:12;:10;:12::i;:::-;36660:36;;:20;36672:7;36660:11;:20::i;:::-;:36;;;36542:154;36516:181;;36715:17;36710:66;;36741:35;;;;;;;;;;;;;;36710:66;36813:4;36791:26;;:13;:18;;;:26;;;36787:67;;36826:28;;;;;;;;;;;;;;36787:67;36883:1;36869:16;;:2;:16;;;36865:52;;;36894:23;;;;;;;;;;;;;;36865:52;36930:43;36952:4;36958:2;36962:7;36971:1;36930:21;:43::i;:::-;37038:49;37055:1;37059:7;37068:13;:18;;;37038:8;:49::i;:::-;37413:1;37383:12;:18;37396:4;37383:18;;;;;;;;;;;;;;;:26;;;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37457:1;37429:12;:16;37442:2;37429:16;;;;;;;;;;;;;;;:24;;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37503:2;37475:11;:20;37487:7;37475:20;;;;;;;;;;;:25;;;:30;;;;;;;;;;;;;;;;;;37565:15;37520:11;:20;37532:7;37520:20;;;;;;;;;;;:35;;;:61;;;;;;;;;;;;;;;;;;37833:19;37865:1;37855:7;:11;37833:33;;37926:1;37885:43;;:11;:24;37897:11;37885:24;;;;;;;;;;;:29;;;;;;;;;;;;:43;;;37881:471;;;38110:13;;38096:11;:27;38092:245;;;38180:13;:18;;;38148:11;:24;38160:11;38148:24;;;;;;;;;;;:29;;;:50;;;;;;;;;;;;;;;;;;38263:13;:54;;;38221:11;:24;38233:11;38221:24;;;;;;;;;;;:39;;;:96;;;;;;;;;;;;;;;;;;38092:245;37881:471;36330:2138;38399:7;38395:2;38380:27;;38389:4;38380:27;;;;;;;;;;;;38418:42;38439:4;38445:2;38449:7;38458:1;38418:20;:42::i;:::-;36330:2138;;;;;:::o;54031:106::-;54089:7;54120:1;54116;:5;:13;;54128:1;54116:13;;;54124:1;54116:13;54109:20;;54031:106;;;;:::o;27861:1140::-;27949:21;;:::i;:::-;27988:12;28003:7;27988:22;;28071:4;28052:15;:13;:15::i;:::-;:23;;:47;;;;;28086:13;;28079:4;:20;28052:47;28048:886;;;28120:31;28154:11;:17;28166:4;28154:17;;;;;;;;;;;28120:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28195:9;:16;;;28190:729;;28266:1;28240:28;;:9;:14;;;:28;;;28236:101;;28304:9;28297:16;;;;;;28236:101;28639:261;28646:4;28639:261;;;28679:6;;;;;;;;28724:11;:17;28736:4;28724:17;;;;;;;;;;;28712:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28798:1;28772:28;;:9;:14;;;:28;;;28768:109;;28840:9;28833:16;;;;;;28768:109;28639:261;;;28190:729;28048:886;;28962:31;;;;;;;;;;;;;;27861:1140;;;;:::o;25432:283::-;25479:7;25681:15;:13;:15::i;:::-;25665:13;;:31;25658:38;;25432:283;:::o;46301:191::-;46375:16;46394:6;;;;;;;;;;;46375:25;;46420:8;46411:6;;:17;;;;;;;;;;;;;;;;;;46475:8;46444:40;;46465:8;46444:40;;;;;;;;;;;;46301:191;;:::o;9992:326::-;10052:4;10309:1;10287:7;:19;;;:23;10280:30;;9992:326;;;:::o;41568:772::-;41731:4;41781:2;41765:36;;;41820:12;:10;:12::i;:::-;41851:4;41874:7;41900:5;41765:155;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;41748:585;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42108:1;42091:6;:13;:18;42087:235;;;42137:40;;;;;;;;;;;;;;42087:235;42280:6;42274:13;42265:6;42261:2;42257:15;42250:38;41748:585;41986:45;;;41976:55;;;:6;:55;;;;41969:62;;;41568:772;;;;;;:::o;61247:109::-;61307:13;61340:8;61333:15;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;61247:109;:::o;18520:723::-;18576:13;18806:1;18797:5;:10;18793:53;;;18824:10;;;;;;;;;;;;;;;;;;;;;18793:53;18856:12;18871:5;18856:20;;18887:14;18912:78;18927:1;18919:4;:9;18912:78;;18945:8;;;;;:::i;:::-;;;;18976:2;18968:10;;;;;:::i;:::-;;;18912:78;;;19000:19;19032:6;19022:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19000:39;;19050:154;19066:1;19057:5;:10;19050:154;;19094:1;19084:11;;;;;:::i;:::-;;;19161:2;19153:5;:10;;;;:::i;:::-;19140:2;:24;;;;:::i;:::-;19127:39;;19110:6;19117;19110:14;;;;;;;;;;;;;;;;;;;:56;;;;;;;;;;;19190:2;19181:11;;;;;:::i;:::-;;;19050:154;;;19228:6;19214:21;;;;;18520:723;;;;:::o;33688:163::-;33811:32;33817:2;33821:8;33831:5;33838:4;33811:5;:32::i;:::-;33688:163;;;:::o;42988:159::-;;;;;:::o;43806:158::-;;;;;:::o;34110:1966::-;34249:20;34272:13;;34249:36;;34314:1;34300:16;;:2;:16;;;34296:48;;;34325:19;;;;;;;;;;;;;;34296:48;34371:1;34359:8;:13;34355:44;;;34381:18;;;;;;;;;;;;;;34355:44;34412:61;34442:1;34446:2;34450:12;34464:8;34412:21;:61::i;:::-;34785:8;34750:12;:16;34763:2;34750:16;;;;;;;;;;;;;;;:24;;;:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34849:8;34809:12;:16;34822:2;34809:16;;;;;;;;;;;;;;;:29;;;:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34908:2;34875:11;:25;34887:12;34875:25;;;;;;;;;;;:30;;;:35;;;;;;;;;;;;;;;;;;34975:15;34925:11;:25;34937:12;34925:25;;;;;;;;;;;:40;;;:66;;;;;;;;;;;;;;;;;;35008:20;35031:12;35008:35;;35058:11;35087:8;35072:12;:23;35058:37;;35116:4;:23;;;;;35124:15;:2;:13;;;:15::i;:::-;35116:23;35112:832;;;35160:505;35216:12;35212:2;35191:38;;35208:1;35191:38;;;;;;;;;;;;35283:212;35352:1;35385:2;35418:14;;;;;;35463:5;35283:30;:212::i;:::-;35252:365;;35553:40;;;;;;;;;;;;;;35252:365;35660:3;35644:12;:19;;35160:505;;35746:12;35729:13;;:29;35725:43;;35760:8;;;35725:43;35112:832;;;35809:120;35865:14;;;;;;35861:2;35840:40;;35857:1;35840:40;;;;;;;;;;;;35924:3;35908:12;:19;;35809:120;;35112:832;35974:12;35958:13;:28;;;;34110:1966;;36008:60;36037:1;36041:2;36045:12;36059:8;36008:20;:60::i;:::-;34110:1966;;;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;24:655:1:-;120:5;145:81;161:64;218:6;161:64;:::i;:::-;145:81;:::i;:::-;136:90;;246:5;275:6;268:5;261:21;309:4;302:5;298:16;291:23;;335:6;385:3;377:4;369:6;365:17;360:3;356:27;353:36;350:2;;;414:1;411;404:12;350:2;450:1;435:238;460:6;457:1;454:13;435:238;;;528:3;557:37;590:3;578:10;557:37;:::i;:::-;552:3;545:50;624:4;619:3;615:14;608:21;;658:4;653:3;649:14;642:21;;495:178;482:1;479;475:9;470:14;;435:238;;;439:14;126:553;;;;;;;:::o;685:343::-;762:5;787:65;803:48;844:6;803:48;:::i;:::-;787:65;:::i;:::-;778:74;;875:6;868:5;861:21;913:4;906:5;902:16;951:3;942:6;937:3;933:16;930:25;927:2;;;968:1;965;958:12;927:2;981:41;1015:6;1010:3;1005;981:41;:::i;:::-;768:260;;;;;;:::o;1034:345::-;1112:5;1137:66;1153:49;1195:6;1153:49;:::i;:::-;1137:66;:::i;:::-;1128:75;;1226:6;1219:5;1212:21;1264:4;1257:5;1253:16;1302:3;1293:6;1288:3;1284:16;1281:25;1278:2;;;1319:1;1316;1309:12;1278:2;1332:41;1366:6;1361:3;1356;1332:41;:::i;:::-;1118:261;;;;;;:::o;1385:139::-;1431:5;1469:6;1456:20;1447:29;;1485:33;1512:5;1485:33;:::i;:::-;1437:87;;;;:::o;1547:303::-;1618:5;1667:3;1660:4;1652:6;1648:17;1644:27;1634:2;;1685:1;1682;1675:12;1634:2;1725:6;1712:20;1750:94;1840:3;1832:6;1825:4;1817:6;1813:17;1750:94;:::i;:::-;1741:103;;1624:226;;;;;:::o;1856:133::-;1899:5;1937:6;1924:20;1915:29;;1953:30;1977:5;1953:30;:::i;:::-;1905:84;;;;:::o;1995:137::-;2040:5;2078:6;2065:20;2056:29;;2094:32;2120:5;2094:32;:::i;:::-;2046:86;;;;:::o;2138:141::-;2194:5;2225:6;2219:13;2210:22;;2241:32;2267:5;2241:32;:::i;:::-;2200:79;;;;:::o;2298:271::-;2353:5;2402:3;2395:4;2387:6;2383:17;2379:27;2369:2;;2420:1;2417;2410:12;2369:2;2460:6;2447:20;2485:78;2559:3;2551:6;2544:4;2536:6;2532:17;2485:78;:::i;:::-;2476:87;;2359:210;;;;;:::o;2589:273::-;2645:5;2694:3;2687:4;2679:6;2675:17;2671:27;2661:2;;2712:1;2709;2702:12;2661:2;2752:6;2739:20;2777:79;2852:3;2844:6;2837:4;2829:6;2825:17;2777:79;:::i;:::-;2768:88;;2651:211;;;;;:::o;2868:139::-;2914:5;2952:6;2939:20;2930:29;;2968:33;2995:5;2968:33;:::i;:::-;2920:87;;;;:::o;3013:262::-;3072:6;3121:2;3109:9;3100:7;3096:23;3092:32;3089:2;;;3137:1;3134;3127:12;3089:2;3180:1;3205:53;3250:7;3241:6;3230:9;3226:22;3205:53;:::i;:::-;3195:63;;3151:117;3079:196;;;;:::o;3281:407::-;3349:6;3357;3406:2;3394:9;3385:7;3381:23;3377:32;3374:2;;;3422:1;3419;3412:12;3374:2;3465:1;3490:53;3535:7;3526:6;3515:9;3511:22;3490:53;:::i;:::-;3480:63;;3436:117;3592:2;3618:53;3663:7;3654:6;3643:9;3639:22;3618:53;:::i;:::-;3608:63;;3563:118;3364:324;;;;;:::o;3694:552::-;3771:6;3779;3787;3836:2;3824:9;3815:7;3811:23;3807:32;3804:2;;;3852:1;3849;3842:12;3804:2;3895:1;3920:53;3965:7;3956:6;3945:9;3941:22;3920:53;:::i;:::-;3910:63;;3866:117;4022:2;4048:53;4093:7;4084:6;4073:9;4069:22;4048:53;:::i;:::-;4038:63;;3993:118;4150:2;4176:53;4221:7;4212:6;4201:9;4197:22;4176:53;:::i;:::-;4166:63;;4121:118;3794:452;;;;;:::o;4252:809::-;4347:6;4355;4363;4371;4420:3;4408:9;4399:7;4395:23;4391:33;4388:2;;;4437:1;4434;4427:12;4388:2;4480:1;4505:53;4550:7;4541:6;4530:9;4526:22;4505:53;:::i;:::-;4495:63;;4451:117;4607:2;4633:53;4678:7;4669:6;4658:9;4654:22;4633:53;:::i;:::-;4623:63;;4578:118;4735:2;4761:53;4806:7;4797:6;4786:9;4782:22;4761:53;:::i;:::-;4751:63;;4706:118;4891:2;4880:9;4876:18;4863:32;4922:18;4914:6;4911:30;4908:2;;;4954:1;4951;4944:12;4908:2;4982:62;5036:7;5027:6;5016:9;5012:22;4982:62;:::i;:::-;4972:72;;4834:220;4378:683;;;;;;;:::o;5067:401::-;5132:6;5140;5189:2;5177:9;5168:7;5164:23;5160:32;5157:2;;;5205:1;5202;5195:12;5157:2;5248:1;5273:53;5318:7;5309:6;5298:9;5294:22;5273:53;:::i;:::-;5263:63;;5219:117;5375:2;5401:50;5443:7;5434:6;5423:9;5419:22;5401:50;:::i;:::-;5391:60;;5346:115;5147:321;;;;;:::o;5474:407::-;5542:6;5550;5599:2;5587:9;5578:7;5574:23;5570:32;5567:2;;;5615:1;5612;5605:12;5567:2;5658:1;5683:53;5728:7;5719:6;5708:9;5704:22;5683:53;:::i;:::-;5673:63;;5629:117;5785:2;5811:53;5856:7;5847:6;5836:9;5832:22;5811:53;:::i;:::-;5801:63;;5756:118;5557:324;;;;;:::o;5887:405::-;5971:6;6020:2;6008:9;5999:7;5995:23;5991:32;5988:2;;;6036:1;6033;6026:12;5988:2;6107:1;6096:9;6092:17;6079:31;6137:18;6129:6;6126:30;6123:2;;;6169:1;6166;6159:12;6123:2;6197:78;6267:7;6258:6;6247:9;6243:22;6197:78;:::i;:::-;6187:88;;6050:235;5978:314;;;;:::o;6298:256::-;6354:6;6403:2;6391:9;6382:7;6378:23;6374:32;6371:2;;;6419:1;6416;6409:12;6371:2;6462:1;6487:50;6529:7;6520:6;6509:9;6505:22;6487:50;:::i;:::-;6477:60;;6433:114;6361:193;;;;:::o;6560:260::-;6618:6;6667:2;6655:9;6646:7;6642:23;6638:32;6635:2;;;6683:1;6680;6673:12;6635:2;6726:1;6751:52;6795:7;6786:6;6775:9;6771:22;6751:52;:::i;:::-;6741:62;;6697:116;6625:195;;;;:::o;6826:282::-;6895:6;6944:2;6932:9;6923:7;6919:23;6915:32;6912:2;;;6960:1;6957;6950:12;6912:2;7003:1;7028:63;7083:7;7074:6;7063:9;7059:22;7028:63;:::i;:::-;7018:73;;6974:127;6902:206;;;;:::o;7114:375::-;7183:6;7232:2;7220:9;7211:7;7207:23;7203:32;7200:2;;;7248:1;7245;7238:12;7200:2;7319:1;7308:9;7304:17;7291:31;7349:18;7341:6;7338:30;7335:2;;;7381:1;7378;7371:12;7335:2;7409:63;7464:7;7455:6;7444:9;7440:22;7409:63;:::i;:::-;7399:73;;7262:220;7190:299;;;;:::o;7495:262::-;7554:6;7603:2;7591:9;7582:7;7578:23;7574:32;7571:2;;;7619:1;7616;7609:12;7571:2;7662:1;7687:53;7732:7;7723:6;7712:9;7708:22;7687:53;:::i;:::-;7677:63;;7633:117;7561:196;;;;:::o;7763:407::-;7831:6;7839;7888:2;7876:9;7867:7;7863:23;7859:32;7856:2;;;7904:1;7901;7894:12;7856:2;7947:1;7972:53;8017:7;8008:6;7997:9;7993:22;7972:53;:::i;:::-;7962:63;;7918:117;8074:2;8100:53;8145:7;8136:6;8125:9;8121:22;8100:53;:::i;:::-;8090:63;;8045:118;7846:324;;;;;:::o;8176:179::-;8245:10;8266:46;8308:3;8300:6;8266:46;:::i;:::-;8344:4;8339:3;8335:14;8321:28;;8256:99;;;;:::o;8361:108::-;8438:24;8456:5;8438:24;:::i;:::-;8433:3;8426:37;8416:53;;:::o;8475:118::-;8562:24;8580:5;8562:24;:::i;:::-;8557:3;8550:37;8540:53;;:::o;8629:732::-;8748:3;8777:54;8825:5;8777:54;:::i;:::-;8847:86;8926:6;8921:3;8847:86;:::i;:::-;8840:93;;8957:56;9007:5;8957:56;:::i;:::-;9036:7;9067:1;9052:284;9077:6;9074:1;9071:13;9052:284;;;9153:6;9147:13;9180:63;9239:3;9224:13;9180:63;:::i;:::-;9173:70;;9266:60;9319:6;9266:60;:::i;:::-;9256:70;;9112:224;9099:1;9096;9092:9;9087:14;;9052:284;;;9056:14;9352:3;9345:10;;8753:608;;;;;;;:::o;9367:109::-;9448:21;9463:5;9448:21;:::i;:::-;9443:3;9436:34;9426:50;;:::o;9482:360::-;9568:3;9596:38;9628:5;9596:38;:::i;:::-;9650:70;9713:6;9708:3;9650:70;:::i;:::-;9643:77;;9729:52;9774:6;9769:3;9762:4;9755:5;9751:16;9729:52;:::i;:::-;9806:29;9828:6;9806:29;:::i;:::-;9801:3;9797:39;9790:46;;9572:270;;;;;:::o;9848:364::-;9936:3;9964:39;9997:5;9964:39;:::i;:::-;10019:71;10083:6;10078:3;10019:71;:::i;:::-;10012:78;;10099:52;10144:6;10139:3;10132:4;10125:5;10121:16;10099:52;:::i;:::-;10176:29;10198:6;10176:29;:::i;:::-;10171:3;10167:39;10160:46;;9940:272;;;;;:::o;10218:377::-;10324:3;10352:39;10385:5;10352:39;:::i;:::-;10407:89;10489:6;10484:3;10407:89;:::i;:::-;10400:96;;10505:52;10550:6;10545:3;10538:4;10531:5;10527:16;10505:52;:::i;:::-;10582:6;10577:3;10573:16;10566:23;;10328:267;;;;;:::o;10601:366::-;10743:3;10764:67;10828:2;10823:3;10764:67;:::i;:::-;10757:74;;10840:93;10929:3;10840:93;:::i;:::-;10958:2;10953:3;10949:12;10942:19;;10747:220;;;:::o;10973:366::-;11115:3;11136:67;11200:2;11195:3;11136:67;:::i;:::-;11129:74;;11212:93;11301:3;11212:93;:::i;:::-;11330:2;11325:3;11321:12;11314:19;;11119:220;;;:::o;11345:366::-;11487:3;11508:67;11572:2;11567:3;11508:67;:::i;:::-;11501:74;;11584:93;11673:3;11584:93;:::i;:::-;11702:2;11697:3;11693:12;11686:19;;11491:220;;;:::o;11717:366::-;11859:3;11880:67;11944:2;11939:3;11880:67;:::i;:::-;11873:74;;11956:93;12045:3;11956:93;:::i;:::-;12074:2;12069:3;12065:12;12058:19;;11863:220;;;:::o;12089:366::-;12231:3;12252:67;12316:2;12311:3;12252:67;:::i;:::-;12245:74;;12328:93;12417:3;12328:93;:::i;:::-;12446:2;12441:3;12437:12;12430:19;;12235:220;;;:::o;12461:366::-;12603:3;12624:67;12688:2;12683:3;12624:67;:::i;:::-;12617:74;;12700:93;12789:3;12700:93;:::i;:::-;12818:2;12813:3;12809:12;12802:19;;12607:220;;;:::o;12833:366::-;12975:3;12996:67;13060:2;13055:3;12996:67;:::i;:::-;12989:74;;13072:93;13161:3;13072:93;:::i;:::-;13190:2;13185:3;13181:12;13174:19;;12979:220;;;:::o;13205:366::-;13347:3;13368:67;13432:2;13427:3;13368:67;:::i;:::-;13361:74;;13444:93;13533:3;13444:93;:::i;:::-;13562:2;13557:3;13553:12;13546:19;;13351:220;;;:::o;13577:398::-;13736:3;13757:83;13838:1;13833:3;13757:83;:::i;:::-;13750:90;;13849:93;13938:3;13849:93;:::i;:::-;13967:1;13962:3;13958:11;13951:18;;13740:235;;;:::o;13981:366::-;14123:3;14144:67;14208:2;14203:3;14144:67;:::i;:::-;14137:74;;14220:93;14309:3;14220:93;:::i;:::-;14338:2;14333:3;14329:12;14322:19;;14127:220;;;:::o;14353:366::-;14495:3;14516:67;14580:2;14575:3;14516:67;:::i;:::-;14509:74;;14592:93;14681:3;14592:93;:::i;:::-;14710:2;14705:3;14701:12;14694:19;;14499:220;;;:::o;14725:366::-;14867:3;14888:67;14952:2;14947:3;14888:67;:::i;:::-;14881:74;;14964:93;15053:3;14964:93;:::i;:::-;15082:2;15077:3;15073:12;15066:19;;14871:220;;;:::o;15097:366::-;15239:3;15260:67;15324:2;15319:3;15260:67;:::i;:::-;15253:74;;15336:93;15425:3;15336:93;:::i;:::-;15454:2;15449:3;15445:12;15438:19;;15243:220;;;:::o;15469:118::-;15556:24;15574:5;15556:24;:::i;:::-;15551:3;15544:37;15534:53;;:::o;15593:435::-;15773:3;15795:95;15886:3;15877:6;15795:95;:::i;:::-;15788:102;;15907:95;15998:3;15989:6;15907:95;:::i;:::-;15900:102;;16019:3;16012:10;;15777:251;;;;;:::o;16034:379::-;16218:3;16240:147;16383:3;16240:147;:::i;:::-;16233:154;;16404:3;16397:10;;16222:191;;;:::o;16419:222::-;16512:4;16550:2;16539:9;16535:18;16527:26;;16563:71;16631:1;16620:9;16616:17;16607:6;16563:71;:::i;:::-;16517:124;;;;:::o;16647:640::-;16842:4;16880:3;16869:9;16865:19;16857:27;;16894:71;16962:1;16951:9;16947:17;16938:6;16894:71;:::i;:::-;16975:72;17043:2;17032:9;17028:18;17019:6;16975:72;:::i;:::-;17057;17125:2;17114:9;17110:18;17101:6;17057:72;:::i;:::-;17176:9;17170:4;17166:20;17161:2;17150:9;17146:18;17139:48;17204:76;17275:4;17266:6;17204:76;:::i;:::-;17196:84;;16847:440;;;;;;;:::o;17293:373::-;17436:4;17474:2;17463:9;17459:18;17451:26;;17523:9;17517:4;17513:20;17509:1;17498:9;17494:17;17487:47;17551:108;17654:4;17645:6;17551:108;:::i;:::-;17543:116;;17441:225;;;;:::o;17672:210::-;17759:4;17797:2;17786:9;17782:18;17774:26;;17810:65;17872:1;17861:9;17857:17;17848:6;17810:65;:::i;:::-;17764:118;;;;:::o;17888:313::-;18001:4;18039:2;18028:9;18024:18;18016:26;;18088:9;18082:4;18078:20;18074:1;18063:9;18059:17;18052:47;18116:78;18189:4;18180:6;18116:78;:::i;:::-;18108:86;;18006:195;;;;:::o;18207:419::-;18373:4;18411:2;18400:9;18396:18;18388:26;;18460:9;18454:4;18450:20;18446:1;18435:9;18431:17;18424:47;18488:131;18614:4;18488:131;:::i;:::-;18480:139;;18378:248;;;:::o;18632:419::-;18798:4;18836:2;18825:9;18821:18;18813:26;;18885:9;18879:4;18875:20;18871:1;18860:9;18856:17;18849:47;18913:131;19039:4;18913:131;:::i;:::-;18905:139;;18803:248;;;:::o;19057:419::-;19223:4;19261:2;19250:9;19246:18;19238:26;;19310:9;19304:4;19300:20;19296:1;19285:9;19281:17;19274:47;19338:131;19464:4;19338:131;:::i;:::-;19330:139;;19228:248;;;:::o;19482:419::-;19648:4;19686:2;19675:9;19671:18;19663:26;;19735:9;19729:4;19725:20;19721:1;19710:9;19706:17;19699:47;19763:131;19889:4;19763:131;:::i;:::-;19755:139;;19653:248;;;:::o;19907:419::-;20073:4;20111:2;20100:9;20096:18;20088:26;;20160:9;20154:4;20150:20;20146:1;20135:9;20131:17;20124:47;20188:131;20314:4;20188:131;:::i;:::-;20180:139;;20078:248;;;:::o;20332:419::-;20498:4;20536:2;20525:9;20521:18;20513:26;;20585:9;20579:4;20575:20;20571:1;20560:9;20556:17;20549:47;20613:131;20739:4;20613:131;:::i;:::-;20605:139;;20503:248;;;:::o;20757:419::-;20923:4;20961:2;20950:9;20946:18;20938:26;;21010:9;21004:4;21000:20;20996:1;20985:9;20981:17;20974:47;21038:131;21164:4;21038:131;:::i;:::-;21030:139;;20928:248;;;:::o;21182:419::-;21348:4;21386:2;21375:9;21371:18;21363:26;;21435:9;21429:4;21425:20;21421:1;21410:9;21406:17;21399:47;21463:131;21589:4;21463:131;:::i;:::-;21455:139;;21353:248;;;:::o;21607:419::-;21773:4;21811:2;21800:9;21796:18;21788:26;;21860:9;21854:4;21850:20;21846:1;21835:9;21831:17;21824:47;21888:131;22014:4;21888:131;:::i;:::-;21880:139;;21778:248;;;:::o;22032:419::-;22198:4;22236:2;22225:9;22221:18;22213:26;;22285:9;22279:4;22275:20;22271:1;22260:9;22256:17;22249:47;22313:131;22439:4;22313:131;:::i;:::-;22305:139;;22203:248;;;:::o;22457:419::-;22623:4;22661:2;22650:9;22646:18;22638:26;;22710:9;22704:4;22700:20;22696:1;22685:9;22681:17;22674:47;22738:131;22864:4;22738:131;:::i;:::-;22730:139;;22628:248;;;:::o;22882:419::-;23048:4;23086:2;23075:9;23071:18;23063:26;;23135:9;23129:4;23125:20;23121:1;23110:9;23106:17;23099:47;23163:131;23289:4;23163:131;:::i;:::-;23155:139;;23053:248;;;:::o;23307:222::-;23400:4;23438:2;23427:9;23423:18;23415:26;;23451:71;23519:1;23508:9;23504:17;23495:6;23451:71;:::i;:::-;23405:124;;;;:::o;23535:129::-;23569:6;23596:20;;:::i;:::-;23586:30;;23625:33;23653:4;23645:6;23625:33;:::i;:::-;23576:88;;;:::o;23670:75::-;23703:6;23736:2;23730:9;23720:19;;23710:35;:::o;23751:311::-;23828:4;23918:18;23910:6;23907:30;23904:2;;;23940:18;;:::i;:::-;23904:2;23990:4;23982:6;23978:17;23970:25;;24050:4;24044;24040:15;24032:23;;23833:229;;;:::o;24068:307::-;24129:4;24219:18;24211:6;24208:30;24205:2;;;24241:18;;:::i;:::-;24205:2;24279:29;24301:6;24279:29;:::i;:::-;24271:37;;24363:4;24357;24353:15;24345:23;;24134:241;;;:::o;24381:308::-;24443:4;24533:18;24525:6;24522:30;24519:2;;;24555:18;;:::i;:::-;24519:2;24593:29;24615:6;24593:29;:::i;:::-;24585:37;;24677:4;24671;24667:15;24659:23;;24448:241;;;:::o;24695:132::-;24762:4;24785:3;24777:11;;24815:4;24810:3;24806:14;24798:22;;24767:60;;;:::o;24833:114::-;24900:6;24934:5;24928:12;24918:22;;24907:40;;;:::o;24953:98::-;25004:6;25038:5;25032:12;25022:22;;25011:40;;;:::o;25057:99::-;25109:6;25143:5;25137:12;25127:22;;25116:40;;;:::o;25162:113::-;25232:4;25264;25259:3;25255:14;25247:22;;25237:38;;;:::o;25281:184::-;25380:11;25414:6;25409:3;25402:19;25454:4;25449:3;25445:14;25430:29;;25392:73;;;;:::o;25471:168::-;25554:11;25588:6;25583:3;25576:19;25628:4;25623:3;25619:14;25604:29;;25566:73;;;;:::o;25645:147::-;25746:11;25783:3;25768:18;;25758:34;;;;:::o;25798:169::-;25882:11;25916:6;25911:3;25904:19;25956:4;25951:3;25947:14;25932:29;;25894:73;;;;:::o;25973:148::-;26075:11;26112:3;26097:18;;26087:34;;;;:::o;26127:305::-;26167:3;26186:20;26204:1;26186:20;:::i;:::-;26181:25;;26220:20;26238:1;26220:20;:::i;:::-;26215:25;;26374:1;26306:66;26302:74;26299:1;26296:81;26293:2;;;26380:18;;:::i;:::-;26293:2;26424:1;26421;26417:9;26410:16;;26171:261;;;;:::o;26438:185::-;26478:1;26495:20;26513:1;26495:20;:::i;:::-;26490:25;;26529:20;26547:1;26529:20;:::i;:::-;26524:25;;26568:1;26558:2;;26573:18;;:::i;:::-;26558:2;26615:1;26612;26608:9;26603:14;;26480:143;;;;:::o;26629:348::-;26669:7;26692:20;26710:1;26692:20;:::i;:::-;26687:25;;26726:20;26744:1;26726:20;:::i;:::-;26721:25;;26914:1;26846:66;26842:74;26839:1;26836:81;26831:1;26824:9;26817:17;26813:105;26810:2;;;26921:18;;:::i;:::-;26810:2;26969:1;26966;26962:9;26951:20;;26677:300;;;;:::o;26983:191::-;27023:4;27043:20;27061:1;27043:20;:::i;:::-;27038:25;;27077:20;27095:1;27077:20;:::i;:::-;27072:25;;27116:1;27113;27110:8;27107:2;;;27121:18;;:::i;:::-;27107:2;27166:1;27163;27159:9;27151:17;;27028:146;;;;:::o;27180:96::-;27217:7;27246:24;27264:5;27246:24;:::i;:::-;27235:35;;27225:51;;;:::o;27282:90::-;27316:7;27359:5;27352:13;27345:21;27334:32;;27324:48;;;:::o;27378:149::-;27414:7;27454:66;27447:5;27443:78;27432:89;;27422:105;;;:::o;27533:126::-;27570:7;27610:42;27603:5;27599:54;27588:65;;27578:81;;;:::o;27665:77::-;27702:7;27731:5;27720:16;;27710:32;;;:::o;27748:154::-;27832:6;27827:3;27822;27809:30;27894:1;27885:6;27880:3;27876:16;27869:27;27799:103;;;:::o;27908:307::-;27976:1;27986:113;28000:6;27997:1;27994:13;27986:113;;;28085:1;28080:3;28076:11;28070:18;28066:1;28061:3;28057:11;28050:39;28022:2;28019:1;28015:10;28010:15;;27986:113;;;28117:6;28114:1;28111:13;28108:2;;;28197:1;28188:6;28183:3;28179:16;28172:27;28108:2;27957:258;;;;:::o;28221:320::-;28265:6;28302:1;28296:4;28292:12;28282:22;;28349:1;28343:4;28339:12;28370:18;28360:2;;28426:4;28418:6;28414:17;28404:27;;28360:2;28488;28480:6;28477:14;28457:18;28454:38;28451:2;;;28507:18;;:::i;:::-;28451:2;28272:269;;;;:::o;28547:281::-;28630:27;28652:4;28630:27;:::i;:::-;28622:6;28618:40;28760:6;28748:10;28745:22;28724:18;28712:10;28709:34;28706:62;28703:2;;;28771:18;;:::i;:::-;28703:2;28811:10;28807:2;28800:22;28590:238;;;:::o;28834:233::-;28873:3;28896:24;28914:5;28896:24;:::i;:::-;28887:33;;28942:66;28935:5;28932:77;28929:2;;;29012:18;;:::i;:::-;28929:2;29059:1;29052:5;29048:13;29041:20;;28877:190;;;:::o;29073:176::-;29105:1;29122:20;29140:1;29122:20;:::i;:::-;29117:25;;29156:20;29174:1;29156:20;:::i;:::-;29151:25;;29195:1;29185:2;;29200:18;;:::i;:::-;29185:2;29241:1;29238;29234:9;29229:14;;29107:142;;;;:::o;29255:180::-;29303:77;29300:1;29293:88;29400:4;29397:1;29390:15;29424:4;29421:1;29414:15;29441:180;29489:77;29486:1;29479:88;29586:4;29583:1;29576:15;29610:4;29607:1;29600:15;29627:180;29675:77;29672:1;29665:88;29772:4;29769:1;29762:15;29796:4;29793:1;29786:15;29813:180;29861:77;29858:1;29851:88;29958:4;29955:1;29948:15;29982:4;29979:1;29972:15;29999:102;30040:6;30091:2;30087:7;30082:2;30075:5;30071:14;30067:28;30057:38;;30047:54;;;:::o;30107:166::-;30247:18;30243:1;30235:6;30231:14;30224:42;30213:60;:::o;30279:180::-;30419:32;30415:1;30407:6;30403:14;30396:56;30385:74;:::o;30465:168::-;30605:20;30601:1;30593:6;30589:14;30582:44;30571:62;:::o;30639:225::-;30779:34;30775:1;30767:6;30763:14;30756:58;30848:8;30843:2;30835:6;30831:15;30824:33;30745:119;:::o;30870:162::-;31010:14;31006:1;30998:6;30994:14;30987:38;30976:56;:::o;31038:177::-;31178:29;31174:1;31166:6;31162:14;31155:53;31144:71;:::o;31221:162::-;31361:14;31357:1;31349:6;31345:14;31338:38;31327:56;:::o;31389:182::-;31529:34;31525:1;31517:6;31513:14;31506:58;31495:76;:::o;31577:114::-;31683:8;:::o;31697:166::-;31837:18;31833:1;31825:6;31821:14;31814:42;31803:60;:::o;31869:164::-;32009:16;32005:1;31997:6;31993:14;31986:40;31975:58;:::o;32039:180::-;32179:32;32175:1;32167:6;32163:14;32156:56;32145:74;:::o;32225:170::-;32365:22;32361:1;32353:6;32349:14;32342:46;32331:64;:::o;32401:122::-;32474:24;32492:5;32474:24;:::i;:::-;32467:5;32464:35;32454:2;;32513:1;32510;32503:12;32454:2;32444:79;:::o;32529:116::-;32599:21;32614:5;32599:21;:::i;:::-;32592:5;32589:32;32579:2;;32635:1;32632;32625:12;32579:2;32569:76;:::o;32651:120::-;32723:23;32740:5;32723:23;:::i;:::-;32716:5;32713:34;32703:2;;32761:1;32758;32751:12;32703:2;32693:78;:::o;32777:122::-;32850:24;32868:5;32850:24;:::i;:::-;32843:5;32840:35;32830:2;;32889:1;32886;32879:12;32830:2;32820:79;:::o
Swarm Source
ipfs://c0e6b4e740f0f78edafd934743733b7213bd7376d093edb887ee5d1d4cd85f5d
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.