Feature Tip: Add private address tag to any address under My Name Tag !
ERC-1155
Overview
Max Total Supply
2,219
Holders
141
Market
Volume (24H)
N/A
Min Price (24H)
N/A
Max Price (24H)
N/A
Other Info
Token Contract
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
cubeXGoldCrad
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-02-03 */ // File: @openzeppelin/contracts/security/ReentrancyGuard.sol // OpenZeppelin Contracts (last updated v4.8.0) (security/ReentrancyGuard.sol) //SPDX-License-Identifier pragma solidity ^0.8.0; /** * @dev Contract module that helps prevent reentrant calls to a function. * * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier * available, which can be applied to functions to make sure there are no nested * (reentrant) calls to them. * * Note that because there is a single `nonReentrant` guard, functions marked as * `nonReentrant` may not call one another. This can be worked around by making * those functions `private`, and then adding `external` `nonReentrant` entry * points to them. * * TIP: If you would like to learn more about reentrancy and alternative ways * to protect against it, check out our blog post * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]. */ abstract contract ReentrancyGuard { // Booleans are more expensive than uint256 or any type that takes up a full // word because each write operation emits an extra SLOAD to first read the // slot's contents, replace the bits taken up by the boolean, and then write // back. This is the compiler's defense against contract upgrades and // pointer aliasing, and it cannot be disabled. // The values being non-zero value makes deployment a bit more expensive, // but in exchange the refund on every call to nonReentrant will be lower in // amount. Since refunds are capped to a percentage of the total // transaction's gas, it is best to keep them low in cases like this one, to // increase the likelihood of the full refund coming into effect. uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor() { _status = _NOT_ENTERED; } /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and making it call a * `private` function that does the actual work. */ modifier nonReentrant() { _nonReentrantBefore(); _; _nonReentrantAfter(); } function _nonReentrantBefore() private { // On the first call to nonReentrant, _status will be _NOT_ENTERED require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); // Any calls to nonReentrant after this point will fail _status = _ENTERED; } function _nonReentrantAfter() private { // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _status = _NOT_ENTERED; } } // File: @openzeppelin/contracts/utils/Context.sol // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // File: @openzeppelin/contracts/access/Ownable.sol // OpenZeppelin Contracts (last updated v4.7.0) (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 Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File: @openzeppelin/contracts/utils/Address.sol // OpenZeppelin Contracts (last updated v4.8.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 functionCallWithValue(target, data, 0, "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"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResultFromTarget(target, 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) { (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResultFromTarget(target, 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) { (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResultFromTarget(target, success, returndata, errorMessage); } /** * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract. * * _Available since v4.8._ */ function verifyCallResultFromTarget( address target, bool success, bytes memory returndata, string memory errorMessage ) internal view returns (bytes memory) { if (success) { if (returndata.length == 0) { // only check isContract if the call was successful and the return data is empty // otherwise we already know that it was a contract require(isContract(target), "Address: call to non-contract"); } return returndata; } else { _revert(returndata, errorMessage); } } /** * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the * revert reason or 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 { _revert(returndata, errorMessage); } } function _revert(bytes memory returndata, string memory errorMessage) private pure { // 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 /// @solidity memory-safe-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } // File: @openzeppelin/contracts/utils/introspection/IERC165.sol // OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC165 standard, as defined in the * https://eips.ethereum.org/EIPS/eip-165[EIP]. * * Implementers can declare support of contract interfaces, which can then be * queried by others ({ERC165Checker}). * * For an implementation, see {ERC165}. */ interface IERC165 { /** * @dev Returns true if this contract implements the interface defined by * `interfaceId`. See the corresponding * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] * to learn more about how these ids are created. * * This function call must use less than 30 000 gas. */ function supportsInterface(bytes4 interfaceId) external view returns (bool); } // File: @openzeppelin/contracts/utils/introspection/ERC165.sol // OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol) pragma solidity ^0.8.0; /** * @dev Implementation of the {IERC165} interface. * * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check * for the additional interface id that will be supported. For example: * * ```solidity * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); * } * ``` * * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation. */ abstract contract ERC165 is IERC165 { /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IERC165).interfaceId; } } // File: @openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol // OpenZeppelin Contracts (last updated v4.5.0) (token/ERC1155/IERC1155Receiver.sol) pragma solidity ^0.8.0; /** * @dev _Available since v3.1._ */ interface IERC1155Receiver is IERC165 { /** * @dev Handles the receipt of a single ERC1155 token type. This function is * called at the end of a `safeTransferFrom` after the balance has been updated. * * NOTE: To accept the transfer, this must return * `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))` * (i.e. 0xf23a6e61, or its own function selector). * * @param operator The address which initiated the transfer (i.e. msg.sender) * @param from The address which previously owned the token * @param id The ID of the token being transferred * @param value The amount of tokens being transferred * @param data Additional data with no specified format * @return `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))` if transfer is allowed */ function onERC1155Received( address operator, address from, uint256 id, uint256 value, bytes calldata data ) external returns (bytes4); /** * @dev Handles the receipt of a multiple ERC1155 token types. This function * is called at the end of a `safeBatchTransferFrom` after the balances have * been updated. * * NOTE: To accept the transfer(s), this must return * `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))` * (i.e. 0xbc197c81, or its own function selector). * * @param operator The address which initiated the batch transfer (i.e. msg.sender) * @param from The address which previously owned the token * @param ids An array containing ids of each token being transferred (order and length must match values array) * @param values An array containing amounts of each token being transferred (order and length must match ids array) * @param data Additional data with no specified format * @return `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))` if transfer is allowed */ function onERC1155BatchReceived( address operator, address from, uint256[] calldata ids, uint256[] calldata values, bytes calldata data ) external returns (bytes4); } // File: @openzeppelin/contracts/token/ERC1155/IERC1155.sol // OpenZeppelin Contracts (last updated v4.7.0) (token/ERC1155/IERC1155.sol) pragma solidity ^0.8.0; /** * @dev Required interface of an ERC1155 compliant contract, as defined in the * https://eips.ethereum.org/EIPS/eip-1155[EIP]. * * _Available since v3.1._ */ interface IERC1155 is IERC165 { /** * @dev Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`. */ event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value); /** * @dev Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all * transfers. */ event TransferBatch( address indexed operator, address indexed from, address indexed to, uint256[] ids, uint256[] values ); /** * @dev Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to * `approved`. */ event ApprovalForAll(address indexed account, address indexed operator, bool approved); /** * @dev Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI. * * If an {URI} event was emitted for `id`, the standard * https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value * returned by {IERC1155MetadataURI-uri}. */ event URI(string value, uint256 indexed id); /** * @dev Returns the amount of tokens of token type `id` owned by `account`. * * Requirements: * * - `account` cannot be the zero address. */ function balanceOf(address account, uint256 id) external view returns (uint256); /** * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}. * * Requirements: * * - `accounts` and `ids` must have the same length. */ function balanceOfBatch(address[] calldata accounts, uint256[] calldata ids) external view returns (uint256[] memory); /** * @dev Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`, * * Emits an {ApprovalForAll} event. * * Requirements: * * - `operator` cannot be the caller. */ function setApprovalForAll(address operator, bool approved) external; /** * @dev Returns true if `operator` is approved to transfer ``account``'s tokens. * * See {setApprovalForAll}. */ function isApprovedForAll(address account, address operator) external view returns (bool); /** * @dev Transfers `amount` tokens of token type `id` from `from` to `to`. * * Emits a {TransferSingle} event. * * Requirements: * * - `to` cannot be the zero address. * - If the caller is not `from`, it must have been approved to spend ``from``'s tokens via {setApprovalForAll}. * - `from` must have a balance of tokens of type `id` of at least `amount`. * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the * acceptance magic value. */ function safeTransferFrom( address from, address to, uint256 id, uint256 amount, bytes calldata data ) external; /** * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}. * * Emits a {TransferBatch} event. * * Requirements: * * - `ids` and `amounts` must have the same length. * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the * acceptance magic value. */ function safeBatchTransferFrom( address from, address to, uint256[] calldata ids, uint256[] calldata amounts, bytes calldata data ) external; } // File: @openzeppelin/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol // OpenZeppelin Contracts v4.4.1 (token/ERC1155/extensions/IERC1155MetadataURI.sol) pragma solidity ^0.8.0; /** * @dev Interface of the optional ERC1155MetadataExtension interface, as defined * in the https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[EIP]. * * _Available since v3.1._ */ interface IERC1155MetadataURI is IERC1155 { /** * @dev Returns the URI for token type `id`. * * If the `\{id\}` substring is present in the URI, it must be replaced by * clients with the actual token type ID. */ function uri(uint256 id) external view returns (string memory); } // File: @openzeppelin/contracts/token/ERC1155/ERC1155.sol // OpenZeppelin Contracts (last updated v4.8.0) (token/ERC1155/ERC1155.sol) pragma solidity ^0.8.0; /** * @dev Implementation of the basic standard multi-token. * See https://eips.ethereum.org/EIPS/eip-1155 * Originally based on code by Enjin: https://github.com/enjin/erc-1155 * * _Available since v3.1._ */ contract ERC1155 is Context, ERC165, IERC1155, IERC1155MetadataURI { using Address for address; // Mapping from token ID to account balances mapping(uint256 => mapping(address => uint256)) private _balances; // Mapping from account to operator approvals mapping(address => mapping(address => bool)) private _operatorApprovals; // Used as the URI for all token types by relying on ID substitution, e.g. https://token-cdn-domain/{id}.json string private _uri; /** * @dev See {_setURI}. */ constructor(string memory uri_) { _setURI(uri_); } /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) { return interfaceId == type(IERC1155).interfaceId || interfaceId == type(IERC1155MetadataURI).interfaceId || super.supportsInterface(interfaceId); } /** * @dev See {IERC1155MetadataURI-uri}. * * This implementation returns the same URI for *all* token types. It relies * on the token type ID substitution mechanism * https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP]. * * Clients calling this function must replace the `\{id\}` substring with the * actual token type ID. */ function uri(uint256) public view virtual override returns (string memory) { return _uri; } /** * @dev See {IERC1155-balanceOf}. * * Requirements: * * - `account` cannot be the zero address. */ function balanceOf(address account, uint256 id) public view virtual override returns (uint256) { require(account != address(0), "ERC1155: address zero is not a valid owner"); return _balances[id][account]; } /** * @dev See {IERC1155-balanceOfBatch}. * * Requirements: * * - `accounts` and `ids` must have the same length. */ function balanceOfBatch(address[] memory accounts, uint256[] memory ids) public view virtual override returns (uint256[] memory) { require(accounts.length == ids.length, "ERC1155: accounts and ids length mismatch"); uint256[] memory batchBalances = new uint256[](accounts.length); for (uint256 i = 0; i < accounts.length; ++i) { batchBalances[i] = balanceOf(accounts[i], ids[i]); } return batchBalances; } /** * @dev See {IERC1155-setApprovalForAll}. */ function setApprovalForAll(address operator, bool approved) public virtual override { _setApprovalForAll(_msgSender(), operator, approved); } /** * @dev See {IERC1155-isApprovedForAll}. */ function isApprovedForAll(address account, address operator) public view virtual override returns (bool) { return _operatorApprovals[account][operator]; } /** * @dev See {IERC1155-safeTransferFrom}. */ function safeTransferFrom( address from, address to, uint256 id, uint256 amount, bytes memory data ) public virtual override { require( from == _msgSender() || isApprovedForAll(from, _msgSender()), "ERC1155: caller is not token owner or approved" ); _safeTransferFrom(from, to, id, amount, data); } /** * @dev See {IERC1155-safeBatchTransferFrom}. */ function safeBatchTransferFrom( address from, address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data ) public virtual override { require( from == _msgSender() || isApprovedForAll(from, _msgSender()), "ERC1155: caller is not token owner or approved" ); _safeBatchTransferFrom(from, to, ids, amounts, data); } /** * @dev Transfers `amount` tokens of token type `id` from `from` to `to`. * * Emits a {TransferSingle} event. * * Requirements: * * - `to` cannot be the zero address. * - `from` must have a balance of tokens of type `id` of at least `amount`. * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the * acceptance magic value. */ function _safeTransferFrom( address from, address to, uint256 id, uint256 amount, bytes memory data ) internal virtual { require(to != address(0), "ERC1155: transfer to the zero address"); address operator = _msgSender(); uint256[] memory ids = _asSingletonArray(id); uint256[] memory amounts = _asSingletonArray(amount); _beforeTokenTransfer(operator, from, to, ids, amounts, data); uint256 fromBalance = _balances[id][from]; require(fromBalance >= amount, "ERC1155: insufficient balance for transfer"); unchecked { _balances[id][from] = fromBalance - amount; } _balances[id][to] += amount; emit TransferSingle(operator, from, to, id, amount); _afterTokenTransfer(operator, from, to, ids, amounts, data); _doSafeTransferAcceptanceCheck(operator, from, to, id, amount, data); } /** * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_safeTransferFrom}. * * Emits a {TransferBatch} event. * * Requirements: * * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the * acceptance magic value. */ function _safeBatchTransferFrom( address from, address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data ) internal virtual { require(ids.length == amounts.length, "ERC1155: ids and amounts length mismatch"); require(to != address(0), "ERC1155: transfer to the zero address"); address operator = _msgSender(); _beforeTokenTransfer(operator, from, to, ids, amounts, data); for (uint256 i = 0; i < ids.length; ++i) { uint256 id = ids[i]; uint256 amount = amounts[i]; uint256 fromBalance = _balances[id][from]; require(fromBalance >= amount, "ERC1155: insufficient balance for transfer"); unchecked { _balances[id][from] = fromBalance - amount; } _balances[id][to] += amount; } emit TransferBatch(operator, from, to, ids, amounts); _afterTokenTransfer(operator, from, to, ids, amounts, data); _doSafeBatchTransferAcceptanceCheck(operator, from, to, ids, amounts, data); } /** * @dev Sets a new URI for all token types, by relying on the token type ID * substitution mechanism * https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP]. * * By this mechanism, any occurrence of the `\{id\}` substring in either the * URI or any of the amounts in the JSON file at said URI will be replaced by * clients with the token type ID. * * For example, the `https://token-cdn-domain/\{id\}.json` URI would be * interpreted by clients as * `https://token-cdn-domain/000000000000000000000000000000000000000000000000000000000004cce0.json` * for token type ID 0x4cce0. * * See {uri}. * * Because these URIs cannot be meaningfully represented by the {URI} event, * this function emits no events. */ function _setURI(string memory newuri) internal virtual { _uri = newuri; } /** * @dev Creates `amount` tokens of token type `id`, and assigns them to `to`. * * Emits a {TransferSingle} event. * * Requirements: * * - `to` cannot be the zero address. * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the * acceptance magic value. */ function _mint( address to, uint256 id, uint256 amount, bytes memory data ) internal virtual { require(to != address(0), "ERC1155: mint to the zero address"); address operator = _msgSender(); uint256[] memory ids = _asSingletonArray(id); uint256[] memory amounts = _asSingletonArray(amount); _beforeTokenTransfer(operator, address(0), to, ids, amounts, data); _balances[id][to] += amount; emit TransferSingle(operator, address(0), to, id, amount); _afterTokenTransfer(operator, address(0), to, ids, amounts, data); _doSafeTransferAcceptanceCheck(operator, address(0), to, id, amount, data); } /** * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_mint}. * * Emits a {TransferBatch} event. * * Requirements: * * - `ids` and `amounts` must have the same length. * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the * acceptance magic value. */ function _mintBatch( address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data ) internal virtual { require(to != address(0), "ERC1155: mint to the zero address"); require(ids.length == amounts.length, "ERC1155: ids and amounts length mismatch"); address operator = _msgSender(); _beforeTokenTransfer(operator, address(0), to, ids, amounts, data); for (uint256 i = 0; i < ids.length; i++) { _balances[ids[i]][to] += amounts[i]; } emit TransferBatch(operator, address(0), to, ids, amounts); _afterTokenTransfer(operator, address(0), to, ids, amounts, data); _doSafeBatchTransferAcceptanceCheck(operator, address(0), to, ids, amounts, data); } /** * @dev Destroys `amount` tokens of token type `id` from `from` * * Emits a {TransferSingle} event. * * Requirements: * * - `from` cannot be the zero address. * - `from` must have at least `amount` tokens of token type `id`. */ function _burn( address from, uint256 id, uint256 amount ) internal virtual { require(from != address(0), "ERC1155: burn from the zero address"); address operator = _msgSender(); uint256[] memory ids = _asSingletonArray(id); uint256[] memory amounts = _asSingletonArray(amount); _beforeTokenTransfer(operator, from, address(0), ids, amounts, ""); uint256 fromBalance = _balances[id][from]; require(fromBalance >= amount, "ERC1155: burn amount exceeds balance"); unchecked { _balances[id][from] = fromBalance - amount; } emit TransferSingle(operator, from, address(0), id, amount); _afterTokenTransfer(operator, from, address(0), ids, amounts, ""); } /** * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_burn}. * * Emits a {TransferBatch} event. * * Requirements: * * - `ids` and `amounts` must have the same length. */ function _burnBatch( address from, uint256[] memory ids, uint256[] memory amounts ) internal virtual { require(from != address(0), "ERC1155: burn from the zero address"); require(ids.length == amounts.length, "ERC1155: ids and amounts length mismatch"); address operator = _msgSender(); _beforeTokenTransfer(operator, from, address(0), ids, amounts, ""); for (uint256 i = 0; i < ids.length; i++) { uint256 id = ids[i]; uint256 amount = amounts[i]; uint256 fromBalance = _balances[id][from]; require(fromBalance >= amount, "ERC1155: burn amount exceeds balance"); unchecked { _balances[id][from] = fromBalance - amount; } } emit TransferBatch(operator, from, address(0), ids, amounts); _afterTokenTransfer(operator, from, address(0), ids, amounts, ""); } /** * @dev Approve `operator` to operate on all of `owner` tokens * * Emits an {ApprovalForAll} event. */ function _setApprovalForAll( address owner, address operator, bool approved ) internal virtual { require(owner != operator, "ERC1155: setting approval status for self"); _operatorApprovals[owner][operator] = approved; emit ApprovalForAll(owner, operator, approved); } /** * @dev Hook that is called before any token transfer. This includes minting * and burning, as well as batched variants. * * The same hook is called on both single and batched variants. For single * transfers, the length of the `ids` and `amounts` arrays will be 1. * * Calling conditions (for each `id` and `amount` pair): * * - When `from` and `to` are both non-zero, `amount` of ``from``'s tokens * of token type `id` will be transferred to `to`. * - When `from` is zero, `amount` tokens of token type `id` will be minted * for `to`. * - when `to` is zero, `amount` of ``from``'s tokens of token type `id` * will be burned. * - `from` and `to` are never both zero. * - `ids` and `amounts` have the same, non-zero length. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address operator, address from, address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data ) internal virtual {} /** * @dev Hook that is called after any token transfer. This includes minting * and burning, as well as batched variants. * * The same hook is called on both single and batched variants. For single * transfers, the length of the `id` and `amount` arrays will be 1. * * Calling conditions (for each `id` and `amount` pair): * * - When `from` and `to` are both non-zero, `amount` of ``from``'s tokens * of token type `id` will be transferred to `to`. * - When `from` is zero, `amount` tokens of token type `id` will be minted * for `to`. * - when `to` is zero, `amount` of ``from``'s tokens of token type `id` * will be burned. * - `from` and `to` are never both zero. * - `ids` and `amounts` have the same, non-zero length. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _afterTokenTransfer( address operator, address from, address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data ) internal virtual {} function _doSafeTransferAcceptanceCheck( address operator, address from, address to, uint256 id, uint256 amount, bytes memory data ) private { if (to.isContract()) { try IERC1155Receiver(to).onERC1155Received(operator, from, id, amount, data) returns (bytes4 response) { if (response != IERC1155Receiver.onERC1155Received.selector) { revert("ERC1155: ERC1155Receiver rejected tokens"); } } catch Error(string memory reason) { revert(reason); } catch { revert("ERC1155: transfer to non-ERC1155Receiver implementer"); } } } function _doSafeBatchTransferAcceptanceCheck( address operator, address from, address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data ) private { if (to.isContract()) { try IERC1155Receiver(to).onERC1155BatchReceived(operator, from, ids, amounts, data) returns ( bytes4 response ) { if (response != IERC1155Receiver.onERC1155BatchReceived.selector) { revert("ERC1155: ERC1155Receiver rejected tokens"); } } catch Error(string memory reason) { revert(reason); } catch { revert("ERC1155: transfer to non-ERC1155Receiver implementer"); } } } function _asSingletonArray(uint256 element) private pure returns (uint256[] memory) { uint256[] memory array = new uint256[](1); array[0] = element; return array; } } // File: @openzeppelin/contracts/token/ERC1155/extensions/ERC1155Supply.sol // OpenZeppelin Contracts (last updated v4.6.0) (token/ERC1155/extensions/ERC1155Supply.sol) pragma solidity ^0.8.0; /** * @dev Extension of ERC1155 that adds tracking of total supply per id. * * Useful for scenarios where Fungible and Non-fungible tokens have to be * clearly identified. Note: While a totalSupply of 1 might mean the * corresponding is an NFT, there is no guarantees that no other token with the * same id are not going to be minted. */ abstract contract ERC1155Supply is ERC1155 { mapping(uint256 => uint256) private _totalSupply; /** * @dev Total amount of tokens in with a given id. */ function totalSupply(uint256 id) public view virtual returns (uint256) { return _totalSupply[id]; } /** * @dev Indicates whether any token exist with a given id, or not. */ function exists(uint256 id) public view virtual returns (bool) { return ERC1155Supply.totalSupply(id) > 0; } /** * @dev See {ERC1155-_beforeTokenTransfer}. */ function _beforeTokenTransfer( address operator, address from, address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data ) internal virtual override { super._beforeTokenTransfer(operator, from, to, ids, amounts, data); if (from == address(0)) { for (uint256 i = 0; i < ids.length; ++i) { _totalSupply[ids[i]] += amounts[i]; } } if (to == address(0)) { for (uint256 i = 0; i < ids.length; ++i) { uint256 id = ids[i]; uint256 amount = amounts[i]; uint256 supply = _totalSupply[id]; require(supply >= amount, "ERC1155: burn amount exceeds totalSupply"); unchecked { _totalSupply[id] = supply - amount; } } } } } // File: contracts/cubeXGold.sol //SPDX-License-Identifier: MIT pragma solidity ^0.8.2; /* * By @Dr.Robotnik */ contract cubeXGoldCrad is ERC1155, ERC1155Supply, Ownable { constructor(string memory _uri) ERC1155(_uri) { _setURI(_uri); } function setURI(string memory newuri) public onlyOwner { _setURI(newuri); } function claim(uint256 _dropNumber, address[] calldata _list) public onlyOwner { for (uint256 i = 0; i < _list.length; i++) { _mint(_list[i], _dropNumber, 10, ""); } } function airdrop5(uint256 _dropNumber, address[] calldata _list) public onlyOwner { for (uint256 i = 0; i < _list.length; i++) { _mint(_list[i], _dropNumber, 5, ""); } } function airdrop3(uint256 _dropNumber, address[] calldata _list) public onlyOwner { for (uint256 i = 0; i < _list.length; i++) { _mint(_list[i], _dropNumber, 3, ""); } } function airdrop2(uint256 _dropNumber, address[] calldata _list) public onlyOwner { for (uint256 i = 0; i < _list.length; i++) { _mint(_list[i], _dropNumber, 2, ""); } } function airdrop25(uint256 _dropNumber, address[] calldata _list) public onlyOwner { for (uint256 i = 0; i < _list.length; i++) { _mint(_list[i], _dropNumber, 25, ""); } } function batchMint( uint256 _tokenID, address _address, uint256 _quantity ) public onlyOwner { _mint(_address, _tokenID, _quantity, ""); } function _beforeTokenTransfer( address operator, address from, address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data ) internal override(ERC1155, ERC1155Supply) { super._beforeTokenTransfer(operator, from, to, ids, amounts, data); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"string","name":"_uri","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","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":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"inputs":[{"internalType":"uint256","name":"_dropNumber","type":"uint256"},{"internalType":"address[]","name":"_list","type":"address[]"}],"name":"airdrop2","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_dropNumber","type":"uint256"},{"internalType":"address[]","name":"_list","type":"address[]"}],"name":"airdrop25","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_dropNumber","type":"uint256"},{"internalType":"address[]","name":"_list","type":"address[]"}],"name":"airdrop3","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_dropNumber","type":"uint256"},{"internalType":"address[]","name":"_list","type":"address[]"}],"name":"airdrop5","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenID","type":"uint256"},{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"_quantity","type":"uint256"}],"name":"batchMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_dropNumber","type":"uint256"},{"internalType":"address[]","name":"_list","type":"address[]"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"exists","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","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":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","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":"newuri","type":"string"}],"name":"setURI","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":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60806040523480156200001157600080fd5b506040516200394c3803806200394c83398181016040528101906200003791906200029a565b8062000049816200008260201b60201c565b506200006a6200005e6200009e60201b60201c565b620000a660201b60201c565b6200007b816200008260201b60201c565b506200046f565b80600290805190602001906200009a9291906200016c565b5050565b600033905090565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8280546200017a9062000380565b90600052602060002090601f0160209004810192826200019e5760008555620001ea565b82601f10620001b957805160ff1916838001178555620001ea565b82800160010185558215620001ea579182015b82811115620001e9578251825591602001919060010190620001cc565b5b509050620001f99190620001fd565b5090565b5b8082111562000218576000816000905550600101620001fe565b5090565b6000620002336200022d8462000314565b620002eb565b9050828152602081018484840111156200025257620002516200044f565b5b6200025f8482856200034a565b509392505050565b600082601f8301126200027f576200027e6200044a565b5b8151620002918482602086016200021c565b91505092915050565b600060208284031215620002b357620002b262000459565b5b600082015167ffffffffffffffff811115620002d457620002d362000454565b5b620002e28482850162000267565b91505092915050565b6000620002f76200030a565b9050620003058282620003b6565b919050565b6000604051905090565b600067ffffffffffffffff8211156200033257620003316200041b565b5b6200033d826200045e565b9050602081019050919050565b60005b838110156200036a5780820151818401526020810190506200034d565b838111156200037a576000848401525b50505050565b600060028204905060018216806200039957607f821691505b60208210811415620003b057620003af620003ec565b5b50919050565b620003c1826200045e565b810181811067ffffffffffffffff82111715620003e357620003e26200041b565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b6134cd806200047f6000396000f3fe608060405234801561001057600080fd5b506004361061012b5760003560e01c80636d5c2fac116100ad578063bd85b03911610071578063bd85b03914610328578063c49dcc2014610358578063e985e9c514610374578063f242432a146103a4578063f2fde38b146103c05761012b565b80636d5c2fac146102ac578063715018a6146102c85780638da5cb5b146102d2578063a22cb465146102f0578063abb9ee881461030c5761012b565b80632eb2c2d6116100f45780632eb2c2d6146101f85780633567ed3b1461021457806342eb9d94146102305780634e1273f41461024c5780634f558e791461027c5761012b565b8062fdd58e1461013057806301ffc9a71461016057806302fe5305146101905780630e89341c146101ac57806323b9c0fa146101dc575b600080fd5b61014a60048036038101906101459190612329565b6103dc565b6040516101579190612b62565b60405180910390f35b61017a600480360381019061017591906123e1565b6104a5565b6040516101879190612985565b60405180910390f35b6101aa60048036038101906101a5919061243b565b610587565b005b6101c660048036038101906101c19190612484565b61059b565b6040516101d391906129a0565b60405180910390f35b6101f660048036038101906101f19190612504565b61062f565b005b610212600480360381019061020d9190612183565b6106a1565b005b61022e600480360381019061022991906124b1565b610742565b005b61024a60048036038101906102459190612504565b61076a565b005b61026660048036038101906102619190612369565b6107dc565b604051610273919061292c565b60405180910390f35b61029660048036038101906102919190612484565b6108f5565b6040516102a39190612985565b60405180910390f35b6102c660048036038101906102c19190612504565b610909565b005b6102d061097b565b005b6102da61098f565b6040516102e7919061284f565b60405180910390f35b61030a600480360381019061030591906122e9565b6109b9565b005b61032660048036038101906103219190612504565b6109cf565b005b610342600480360381019061033d9190612484565b610a41565b60405161034f9190612b62565b60405180910390f35b610372600480360381019061036d9190612504565b610a5e565b005b61038e60048036038101906103899190612143565b610ad0565b60405161039b9190612985565b60405180910390f35b6103be60048036038101906103b99190612252565b610b64565b005b6103da60048036038101906103d59190612116565b610c05565b005b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561044d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161044490612a02565b60405180910390fd5b60008083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60007fd9b67a26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061057057507f0e89341c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610580575061057f82610c89565b5b9050919050565b61058f610cf3565b61059881610d71565b50565b6060600280546105aa90612e02565b80601f01602080910402602001604051908101604052809291908181526020018280546105d690612e02565b80156106235780601f106105f857610100808354040283529160200191610623565b820191906000526020600020905b81548152906001019060200180831161060657829003601f168201915b50505050509050919050565b610637610cf3565b60005b8282905081101561069b5761068883838381811061065b5761065a612f0c565b5b90506020020160208101906106709190612116565b85601960405180602001604052806000815250610d8b565b808061069390612e65565b91505061063a565b50505050565b6106a9610f3c565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806106ef57506106ee856106e9610f3c565b610ad0565b5b61072e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072590612a22565b60405180910390fd5b61073b8585858585610f44565b5050505050565b61074a610cf3565b61076582848360405180602001604052806000815250610d8b565b505050565b610772610cf3565b60005b828290508110156107d6576107c383838381811061079657610795612f0c565b5b90506020020160208101906107ab9190612116565b85600a60405180602001604052806000815250610d8b565b80806107ce90612e65565b915050610775565b50505050565b60608151835114610822576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081990612ae2565b60405180910390fd5b6000835167ffffffffffffffff81111561083f5761083e612f3b565b5b60405190808252806020026020018201604052801561086d5781602001602082028036833780820191505090505b50905060005b84518110156108ea576108ba85828151811061089257610891612f0c565b5b60200260200101518583815181106108ad576108ac612f0c565b5b60200260200101516103dc565b8282815181106108cd576108cc612f0c565b5b602002602001018181525050806108e390612e65565b9050610873565b508091505092915050565b60008061090183610a41565b119050919050565b610911610cf3565b60005b828290508110156109755761096283838381811061093557610934612f0c565b5b905060200201602081019061094a9190612116565b85600360405180602001604052806000815250610d8b565b808061096d90612e65565b915050610914565b50505050565b610983610cf3565b61098d6000611266565b565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6109cb6109c4610f3c565b838361132c565b5050565b6109d7610cf3565b60005b82829050811015610a3b57610a288383838181106109fb576109fa612f0c565b5b9050602002016020810190610a109190612116565b85600260405180602001604052806000815250610d8b565b8080610a3390612e65565b9150506109da565b50505050565b600060036000838152602001908152602001600020549050919050565b610a66610cf3565b60005b82829050811015610aca57610ab7838383818110610a8a57610a89612f0c565b5b9050602002016020810190610a9f9190612116565b85600560405180602001604052806000815250610d8b565b8080610ac290612e65565b915050610a69565b50505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b610b6c610f3c565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480610bb25750610bb185610bac610f3c565b610ad0565b5b610bf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be890612a22565b60405180910390fd5b610bfe8585858585611499565b5050505050565b610c0d610cf3565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610c7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c74906129e2565b60405180910390fd5b610c8681611266565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b610cfb610f3c565b73ffffffffffffffffffffffffffffffffffffffff16610d1961098f565b73ffffffffffffffffffffffffffffffffffffffff1614610d6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6690612a82565b60405180910390fd5b565b8060029080519060200190610d87929190611d98565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610dfb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df290612b22565b60405180910390fd5b6000610e05610f3c565b90506000610e1285611735565b90506000610e1f85611735565b9050610e30836000898585896117af565b8460008088815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610e8f9190612cf6565b925050819055508673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628989604051610f0d929190612b7d565b60405180910390a4610f24836000898585896117c5565b610f33836000898989896117cd565b50505050505050565b600033905090565b8151835114610f88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7f90612b02565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610ff8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fef90612a42565b60405180910390fd5b6000611002610f3c565b90506110128187878787876117af565b60005b84518110156111c357600085828151811061103357611032612f0c565b5b60200260200101519050600085838151811061105257611051612f0c565b5b60200260200101519050600080600084815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156110f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ea90612a62565b60405180910390fd5b81810360008085815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160008085815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546111a89190612cf6565b92505081905550505050806111bc90612e65565b9050611015565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb878760405161123a92919061294e565b60405180910390a46112508187878787876117c5565b61125e8187878787876119b4565b505050505050565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561139b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139290612ac2565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161148c9190612985565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611509576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150090612a42565b60405180910390fd5b6000611513610f3c565b9050600061152085611735565b9050600061152d85611735565b905061153d8389898585896117af565b600080600088815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050858110156115d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115cb90612a62565b60405180910390fd5b85810360008089815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508560008089815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546116899190612cf6565b925050819055508773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628a8a604051611706929190612b7d565b60405180910390a461171c848a8a86868a6117c5565b61172a848a8a8a8a8a6117cd565b505050505050505050565b60606000600167ffffffffffffffff81111561175457611753612f3b565b5b6040519080825280602002602001820160405280156117825781602001602082028036833780820191505090505b509050828160008151811061179a57611799612f0c565b5b60200260200101818152505080915050919050565b6117bd868686868686611b9b565b505050505050565b505050505050565b6117ec8473ffffffffffffffffffffffffffffffffffffffff16611d6d565b156119ac578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b81526004016118329594939291906128d2565b602060405180830381600087803b15801561184c57600080fd5b505af192505050801561187d57506040513d601f19601f8201168201806040525081019061187a919061240e565b60015b61192357611889612f6a565b806308c379a014156118e6575061189e6133a5565b806118a957506118e8565b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118dd91906129a0565b60405180910390fd5b505b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191a90612b42565b60405180910390fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146119aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a1906129c2565b60405180910390fd5b505b505050505050565b6119d38473ffffffffffffffffffffffffffffffffffffffff16611d6d565b15611b93578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b8152600401611a1995949392919061286a565b602060405180830381600087803b158015611a3357600080fd5b505af1925050508015611a6457506040513d601f19601f82011682018060405250810190611a61919061240e565b60015b611b0a57611a70612f6a565b806308c379a01415611acd5750611a856133a5565b80611a905750611acf565b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac491906129a0565b60405180910390fd5b505b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0190612b42565b60405180910390fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611b91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b88906129c2565b60405180910390fd5b505b505050505050565b611ba9868686868686611d90565b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415611c5b5760005b8351811015611c5957828181518110611bfd57611bfc612f0c565b5b602002602001015160036000868481518110611c1c57611c1b612f0c565b5b602002602001015181526020019081526020016000206000828254611c419190612cf6565b9250508190555080611c5290612e65565b9050611be1565b505b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611d655760005b8351811015611d63576000848281518110611cb157611cb0612f0c565b5b602002602001015190506000848381518110611cd057611ccf612f0c565b5b6020026020010151905060006003600084815260200190815260200160002054905081811015611d35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2c90612aa2565b60405180910390fd5b818103600360008581526020019081526020016000208190555050505080611d5c90612e65565b9050611c93565b505b505050505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b505050505050565b828054611da490612e02565b90600052602060002090601f016020900481019282611dc65760008555611e0d565b82601f10611ddf57805160ff1916838001178555611e0d565b82800160010185558215611e0d579182015b82811115611e0c578251825591602001919060010190611df1565b5b509050611e1a9190611e1e565b5090565b5b80821115611e37576000816000905550600101611e1f565b5090565b6000611e4e611e4984612bcb565b612ba6565b90508083825260208201905082856020860282011115611e7157611e70612f96565b5b60005b85811015611ea15781611e878882611f9f565b845260208401935060208301925050600181019050611e74565b5050509392505050565b6000611ebe611eb984612bf7565b612ba6565b90508083825260208201905082856020860282011115611ee157611ee0612f96565b5b60005b85811015611f115781611ef78882612101565b845260208401935060208301925050600181019050611ee4565b5050509392505050565b6000611f2e611f2984612c23565b612ba6565b905082815260208101848484011115611f4a57611f49612f9b565b5b611f55848285612dc0565b509392505050565b6000611f70611f6b84612c54565b612ba6565b905082815260208101848484011115611f8c57611f8b612f9b565b5b611f97848285612dc0565b509392505050565b600081359050611fae8161343b565b92915050565b60008083601f840112611fca57611fc9612f91565b5b8235905067ffffffffffffffff811115611fe757611fe6612f8c565b5b60208301915083602082028301111561200357612002612f96565b5b9250929050565b600082601f83011261201f5761201e612f91565b5b813561202f848260208601611e3b565b91505092915050565b600082601f83011261204d5761204c612f91565b5b813561205d848260208601611eab565b91505092915050565b60008135905061207581613452565b92915050565b60008135905061208a81613469565b92915050565b60008151905061209f81613469565b92915050565b600082601f8301126120ba576120b9612f91565b5b81356120ca848260208601611f1b565b91505092915050565b600082601f8301126120e8576120e7612f91565b5b81356120f8848260208601611f5d565b91505092915050565b60008135905061211081613480565b92915050565b60006020828403121561212c5761212b612fa5565b5b600061213a84828501611f9f565b91505092915050565b6000806040838503121561215a57612159612fa5565b5b600061216885828601611f9f565b925050602061217985828601611f9f565b9150509250929050565b600080600080600060a0868803121561219f5761219e612fa5565b5b60006121ad88828901611f9f565b95505060206121be88828901611f9f565b945050604086013567ffffffffffffffff8111156121df576121de612fa0565b5b6121eb88828901612038565b935050606086013567ffffffffffffffff81111561220c5761220b612fa0565b5b61221888828901612038565b925050608086013567ffffffffffffffff81111561223957612238612fa0565b5b612245888289016120a5565b9150509295509295909350565b600080600080600060a0868803121561226e5761226d612fa5565b5b600061227c88828901611f9f565b955050602061228d88828901611f9f565b945050604061229e88828901612101565b93505060606122af88828901612101565b925050608086013567ffffffffffffffff8111156122d0576122cf612fa0565b5b6122dc888289016120a5565b9150509295509295909350565b60008060408385031215612300576122ff612fa5565b5b600061230e85828601611f9f565b925050602061231f85828601612066565b9150509250929050565b600080604083850312156123405761233f612fa5565b5b600061234e85828601611f9f565b925050602061235f85828601612101565b9150509250929050565b600080604083850312156123805761237f612fa5565b5b600083013567ffffffffffffffff81111561239e5761239d612fa0565b5b6123aa8582860161200a565b925050602083013567ffffffffffffffff8111156123cb576123ca612fa0565b5b6123d785828601612038565b9150509250929050565b6000602082840312156123f7576123f6612fa5565b5b60006124058482850161207b565b91505092915050565b60006020828403121561242457612423612fa5565b5b600061243284828501612090565b91505092915050565b60006020828403121561245157612450612fa5565b5b600082013567ffffffffffffffff81111561246f5761246e612fa0565b5b61247b848285016120d3565b91505092915050565b60006020828403121561249a57612499612fa5565b5b60006124a884828501612101565b91505092915050565b6000806000606084860312156124ca576124c9612fa5565b5b60006124d886828701612101565b93505060206124e986828701611f9f565b92505060406124fa86828701612101565b9150509250925092565b60008060006040848603121561251d5761251c612fa5565b5b600061252b86828701612101565b935050602084013567ffffffffffffffff81111561254c5761254b612fa0565b5b61255886828701611fb4565b92509250509250925092565b60006125708383612831565b60208301905092915050565b61258581612d4c565b82525050565b600061259682612c95565b6125a08185612cc3565b93506125ab83612c85565b8060005b838110156125dc5781516125c38882612564565b97506125ce83612cb6565b9250506001810190506125af565b5085935050505092915050565b6125f281612d5e565b82525050565b600061260382612ca0565b61260d8185612cd4565b935061261d818560208601612dcf565b61262681612faa565b840191505092915050565b600061263c82612cab565b6126468185612ce5565b9350612656818560208601612dcf565b61265f81612faa565b840191505092915050565b6000612677602883612ce5565b915061268282612fc8565b604082019050919050565b600061269a602683612ce5565b91506126a582613017565b604082019050919050565b60006126bd602a83612ce5565b91506126c882613066565b604082019050919050565b60006126e0602e83612ce5565b91506126eb826130b5565b604082019050919050565b6000612703602583612ce5565b915061270e82613104565b604082019050919050565b6000612726602a83612ce5565b915061273182613153565b604082019050919050565b6000612749602083612ce5565b9150612754826131a2565b602082019050919050565b600061276c602883612ce5565b9150612777826131cb565b604082019050919050565b600061278f602983612ce5565b915061279a8261321a565b604082019050919050565b60006127b2602983612ce5565b91506127bd82613269565b604082019050919050565b60006127d5602883612ce5565b91506127e0826132b8565b604082019050919050565b60006127f8602183612ce5565b915061280382613307565b604082019050919050565b600061281b603483612ce5565b915061282682613356565b604082019050919050565b61283a81612db6565b82525050565b61284981612db6565b82525050565b6000602082019050612864600083018461257c565b92915050565b600060a08201905061287f600083018861257c565b61288c602083018761257c565b818103604083015261289e818661258b565b905081810360608301526128b2818561258b565b905081810360808301526128c681846125f8565b90509695505050505050565b600060a0820190506128e7600083018861257c565b6128f4602083018761257c565b6129016040830186612840565b61290e6060830185612840565b818103608083015261292081846125f8565b90509695505050505050565b60006020820190508181036000830152612946818461258b565b905092915050565b60006040820190508181036000830152612968818561258b565b9050818103602083015261297c818461258b565b90509392505050565b600060208201905061299a60008301846125e9565b92915050565b600060208201905081810360008301526129ba8184612631565b905092915050565b600060208201905081810360008301526129db8161266a565b9050919050565b600060208201905081810360008301526129fb8161268d565b9050919050565b60006020820190508181036000830152612a1b816126b0565b9050919050565b60006020820190508181036000830152612a3b816126d3565b9050919050565b60006020820190508181036000830152612a5b816126f6565b9050919050565b60006020820190508181036000830152612a7b81612719565b9050919050565b60006020820190508181036000830152612a9b8161273c565b9050919050565b60006020820190508181036000830152612abb8161275f565b9050919050565b60006020820190508181036000830152612adb81612782565b9050919050565b60006020820190508181036000830152612afb816127a5565b9050919050565b60006020820190508181036000830152612b1b816127c8565b9050919050565b60006020820190508181036000830152612b3b816127eb565b9050919050565b60006020820190508181036000830152612b5b8161280e565b9050919050565b6000602082019050612b776000830184612840565b92915050565b6000604082019050612b926000830185612840565b612b9f6020830184612840565b9392505050565b6000612bb0612bc1565b9050612bbc8282612e34565b919050565b6000604051905090565b600067ffffffffffffffff821115612be657612be5612f3b565b5b602082029050602081019050919050565b600067ffffffffffffffff821115612c1257612c11612f3b565b5b602082029050602081019050919050565b600067ffffffffffffffff821115612c3e57612c3d612f3b565b5b612c4782612faa565b9050602081019050919050565b600067ffffffffffffffff821115612c6f57612c6e612f3b565b5b612c7882612faa565b9050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b6000612d0182612db6565b9150612d0c83612db6565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612d4157612d40612eae565b5b828201905092915050565b6000612d5782612d96565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015612ded578082015181840152602081019050612dd2565b83811115612dfc576000848401525b50505050565b60006002820490506001821680612e1a57607f821691505b60208210811415612e2e57612e2d612edd565b5b50919050565b612e3d82612faa565b810181811067ffffffffffffffff82111715612e5c57612e5b612f3b565b5b80604052505050565b6000612e7082612db6565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612ea357612ea2612eae565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600060033d1115612f895760046000803e612f86600051612fbb565b90505b90565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160e01c9050919050565b7f455243313135353a204552433131353552656365697665722072656a6563746560008201527f6420746f6b656e73000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2061646472657373207a65726f206973206e6f742061207660008201527f616c6964206f776e657200000000000000000000000000000000000000000000602082015250565b7f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60008201527f6572206f7220617070726f766564000000000000000000000000000000000000602082015250565b7f455243313135353a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a20696e73756666696369656e742062616c616e636520666f60008201527f72207472616e7366657200000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f455243313135353a206275726e20616d6f756e74206578636565647320746f7460008201527f616c537570706c79000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2073657474696e6720617070726f76616c2073746174757360008201527f20666f722073656c660000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206163636f756e747320616e6420696473206c656e67746860008201527f206d69736d617463680000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060008201527f6d69736d61746368000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a207472616e7366657220746f206e6f6e2d4552433131353560008201527f526563656976657220696d706c656d656e746572000000000000000000000000602082015250565b600060443d10156133b557613438565b6133bd612bc1565b60043d036004823e80513d602482011167ffffffffffffffff821117156133e5575050613438565b808201805167ffffffffffffffff8111156134035750505050613438565b80602083010160043d038501811115613420575050505050613438565b61342f82602001850186612e34565b82955050505050505b90565b61344481612d4c565b811461344f57600080fd5b50565b61345b81612d5e565b811461346657600080fd5b50565b61347281612d6a565b811461347d57600080fd5b50565b61348981612db6565b811461349457600080fd5b5056fea2646970667358221220be611d58c81e9a3a6f5f8a515266abf907c54ab6755a9eee7983353b5698e07e64736f6c634300080700330000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000005668747470733a2f2f6d6574616c68656164732e6d7970696e6174612e636c6f75642f697066732f516d635455736548716b583372426138516e6659645161326f576b746f4b683751626d7256465744756934646e792f00000000000000000000
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061012b5760003560e01c80636d5c2fac116100ad578063bd85b03911610071578063bd85b03914610328578063c49dcc2014610358578063e985e9c514610374578063f242432a146103a4578063f2fde38b146103c05761012b565b80636d5c2fac146102ac578063715018a6146102c85780638da5cb5b146102d2578063a22cb465146102f0578063abb9ee881461030c5761012b565b80632eb2c2d6116100f45780632eb2c2d6146101f85780633567ed3b1461021457806342eb9d94146102305780634e1273f41461024c5780634f558e791461027c5761012b565b8062fdd58e1461013057806301ffc9a71461016057806302fe5305146101905780630e89341c146101ac57806323b9c0fa146101dc575b600080fd5b61014a60048036038101906101459190612329565b6103dc565b6040516101579190612b62565b60405180910390f35b61017a600480360381019061017591906123e1565b6104a5565b6040516101879190612985565b60405180910390f35b6101aa60048036038101906101a5919061243b565b610587565b005b6101c660048036038101906101c19190612484565b61059b565b6040516101d391906129a0565b60405180910390f35b6101f660048036038101906101f19190612504565b61062f565b005b610212600480360381019061020d9190612183565b6106a1565b005b61022e600480360381019061022991906124b1565b610742565b005b61024a60048036038101906102459190612504565b61076a565b005b61026660048036038101906102619190612369565b6107dc565b604051610273919061292c565b60405180910390f35b61029660048036038101906102919190612484565b6108f5565b6040516102a39190612985565b60405180910390f35b6102c660048036038101906102c19190612504565b610909565b005b6102d061097b565b005b6102da61098f565b6040516102e7919061284f565b60405180910390f35b61030a600480360381019061030591906122e9565b6109b9565b005b61032660048036038101906103219190612504565b6109cf565b005b610342600480360381019061033d9190612484565b610a41565b60405161034f9190612b62565b60405180910390f35b610372600480360381019061036d9190612504565b610a5e565b005b61038e60048036038101906103899190612143565b610ad0565b60405161039b9190612985565b60405180910390f35b6103be60048036038101906103b99190612252565b610b64565b005b6103da60048036038101906103d59190612116565b610c05565b005b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561044d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161044490612a02565b60405180910390fd5b60008083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60007fd9b67a26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061057057507f0e89341c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610580575061057f82610c89565b5b9050919050565b61058f610cf3565b61059881610d71565b50565b6060600280546105aa90612e02565b80601f01602080910402602001604051908101604052809291908181526020018280546105d690612e02565b80156106235780601f106105f857610100808354040283529160200191610623565b820191906000526020600020905b81548152906001019060200180831161060657829003601f168201915b50505050509050919050565b610637610cf3565b60005b8282905081101561069b5761068883838381811061065b5761065a612f0c565b5b90506020020160208101906106709190612116565b85601960405180602001604052806000815250610d8b565b808061069390612e65565b91505061063a565b50505050565b6106a9610f3c565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806106ef57506106ee856106e9610f3c565b610ad0565b5b61072e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072590612a22565b60405180910390fd5b61073b8585858585610f44565b5050505050565b61074a610cf3565b61076582848360405180602001604052806000815250610d8b565b505050565b610772610cf3565b60005b828290508110156107d6576107c383838381811061079657610795612f0c565b5b90506020020160208101906107ab9190612116565b85600a60405180602001604052806000815250610d8b565b80806107ce90612e65565b915050610775565b50505050565b60608151835114610822576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081990612ae2565b60405180910390fd5b6000835167ffffffffffffffff81111561083f5761083e612f3b565b5b60405190808252806020026020018201604052801561086d5781602001602082028036833780820191505090505b50905060005b84518110156108ea576108ba85828151811061089257610891612f0c565b5b60200260200101518583815181106108ad576108ac612f0c565b5b60200260200101516103dc565b8282815181106108cd576108cc612f0c565b5b602002602001018181525050806108e390612e65565b9050610873565b508091505092915050565b60008061090183610a41565b119050919050565b610911610cf3565b60005b828290508110156109755761096283838381811061093557610934612f0c565b5b905060200201602081019061094a9190612116565b85600360405180602001604052806000815250610d8b565b808061096d90612e65565b915050610914565b50505050565b610983610cf3565b61098d6000611266565b565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6109cb6109c4610f3c565b838361132c565b5050565b6109d7610cf3565b60005b82829050811015610a3b57610a288383838181106109fb576109fa612f0c565b5b9050602002016020810190610a109190612116565b85600260405180602001604052806000815250610d8b565b8080610a3390612e65565b9150506109da565b50505050565b600060036000838152602001908152602001600020549050919050565b610a66610cf3565b60005b82829050811015610aca57610ab7838383818110610a8a57610a89612f0c565b5b9050602002016020810190610a9f9190612116565b85600560405180602001604052806000815250610d8b565b8080610ac290612e65565b915050610a69565b50505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b610b6c610f3c565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480610bb25750610bb185610bac610f3c565b610ad0565b5b610bf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be890612a22565b60405180910390fd5b610bfe8585858585611499565b5050505050565b610c0d610cf3565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610c7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c74906129e2565b60405180910390fd5b610c8681611266565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b610cfb610f3c565b73ffffffffffffffffffffffffffffffffffffffff16610d1961098f565b73ffffffffffffffffffffffffffffffffffffffff1614610d6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6690612a82565b60405180910390fd5b565b8060029080519060200190610d87929190611d98565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610dfb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df290612b22565b60405180910390fd5b6000610e05610f3c565b90506000610e1285611735565b90506000610e1f85611735565b9050610e30836000898585896117af565b8460008088815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610e8f9190612cf6565b925050819055508673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628989604051610f0d929190612b7d565b60405180910390a4610f24836000898585896117c5565b610f33836000898989896117cd565b50505050505050565b600033905090565b8151835114610f88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7f90612b02565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610ff8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fef90612a42565b60405180910390fd5b6000611002610f3c565b90506110128187878787876117af565b60005b84518110156111c357600085828151811061103357611032612f0c565b5b60200260200101519050600085838151811061105257611051612f0c565b5b60200260200101519050600080600084815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156110f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ea90612a62565b60405180910390fd5b81810360008085815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160008085815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546111a89190612cf6565b92505081905550505050806111bc90612e65565b9050611015565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb878760405161123a92919061294e565b60405180910390a46112508187878787876117c5565b61125e8187878787876119b4565b505050505050565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561139b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139290612ac2565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161148c9190612985565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611509576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150090612a42565b60405180910390fd5b6000611513610f3c565b9050600061152085611735565b9050600061152d85611735565b905061153d8389898585896117af565b600080600088815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050858110156115d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115cb90612a62565b60405180910390fd5b85810360008089815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508560008089815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546116899190612cf6565b925050819055508773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628a8a604051611706929190612b7d565b60405180910390a461171c848a8a86868a6117c5565b61172a848a8a8a8a8a6117cd565b505050505050505050565b60606000600167ffffffffffffffff81111561175457611753612f3b565b5b6040519080825280602002602001820160405280156117825781602001602082028036833780820191505090505b509050828160008151811061179a57611799612f0c565b5b60200260200101818152505080915050919050565b6117bd868686868686611b9b565b505050505050565b505050505050565b6117ec8473ffffffffffffffffffffffffffffffffffffffff16611d6d565b156119ac578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b81526004016118329594939291906128d2565b602060405180830381600087803b15801561184c57600080fd5b505af192505050801561187d57506040513d601f19601f8201168201806040525081019061187a919061240e565b60015b61192357611889612f6a565b806308c379a014156118e6575061189e6133a5565b806118a957506118e8565b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118dd91906129a0565b60405180910390fd5b505b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191a90612b42565b60405180910390fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146119aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a1906129c2565b60405180910390fd5b505b505050505050565b6119d38473ffffffffffffffffffffffffffffffffffffffff16611d6d565b15611b93578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b8152600401611a1995949392919061286a565b602060405180830381600087803b158015611a3357600080fd5b505af1925050508015611a6457506040513d601f19601f82011682018060405250810190611a61919061240e565b60015b611b0a57611a70612f6a565b806308c379a01415611acd5750611a856133a5565b80611a905750611acf565b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac491906129a0565b60405180910390fd5b505b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0190612b42565b60405180910390fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611b91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b88906129c2565b60405180910390fd5b505b505050505050565b611ba9868686868686611d90565b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415611c5b5760005b8351811015611c5957828181518110611bfd57611bfc612f0c565b5b602002602001015160036000868481518110611c1c57611c1b612f0c565b5b602002602001015181526020019081526020016000206000828254611c419190612cf6565b9250508190555080611c5290612e65565b9050611be1565b505b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611d655760005b8351811015611d63576000848281518110611cb157611cb0612f0c565b5b602002602001015190506000848381518110611cd057611ccf612f0c565b5b6020026020010151905060006003600084815260200190815260200160002054905081811015611d35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2c90612aa2565b60405180910390fd5b818103600360008581526020019081526020016000208190555050505080611d5c90612e65565b9050611c93565b505b505050505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b505050505050565b828054611da490612e02565b90600052602060002090601f016020900481019282611dc65760008555611e0d565b82601f10611ddf57805160ff1916838001178555611e0d565b82800160010185558215611e0d579182015b82811115611e0c578251825591602001919060010190611df1565b5b509050611e1a9190611e1e565b5090565b5b80821115611e37576000816000905550600101611e1f565b5090565b6000611e4e611e4984612bcb565b612ba6565b90508083825260208201905082856020860282011115611e7157611e70612f96565b5b60005b85811015611ea15781611e878882611f9f565b845260208401935060208301925050600181019050611e74565b5050509392505050565b6000611ebe611eb984612bf7565b612ba6565b90508083825260208201905082856020860282011115611ee157611ee0612f96565b5b60005b85811015611f115781611ef78882612101565b845260208401935060208301925050600181019050611ee4565b5050509392505050565b6000611f2e611f2984612c23565b612ba6565b905082815260208101848484011115611f4a57611f49612f9b565b5b611f55848285612dc0565b509392505050565b6000611f70611f6b84612c54565b612ba6565b905082815260208101848484011115611f8c57611f8b612f9b565b5b611f97848285612dc0565b509392505050565b600081359050611fae8161343b565b92915050565b60008083601f840112611fca57611fc9612f91565b5b8235905067ffffffffffffffff811115611fe757611fe6612f8c565b5b60208301915083602082028301111561200357612002612f96565b5b9250929050565b600082601f83011261201f5761201e612f91565b5b813561202f848260208601611e3b565b91505092915050565b600082601f83011261204d5761204c612f91565b5b813561205d848260208601611eab565b91505092915050565b60008135905061207581613452565b92915050565b60008135905061208a81613469565b92915050565b60008151905061209f81613469565b92915050565b600082601f8301126120ba576120b9612f91565b5b81356120ca848260208601611f1b565b91505092915050565b600082601f8301126120e8576120e7612f91565b5b81356120f8848260208601611f5d565b91505092915050565b60008135905061211081613480565b92915050565b60006020828403121561212c5761212b612fa5565b5b600061213a84828501611f9f565b91505092915050565b6000806040838503121561215a57612159612fa5565b5b600061216885828601611f9f565b925050602061217985828601611f9f565b9150509250929050565b600080600080600060a0868803121561219f5761219e612fa5565b5b60006121ad88828901611f9f565b95505060206121be88828901611f9f565b945050604086013567ffffffffffffffff8111156121df576121de612fa0565b5b6121eb88828901612038565b935050606086013567ffffffffffffffff81111561220c5761220b612fa0565b5b61221888828901612038565b925050608086013567ffffffffffffffff81111561223957612238612fa0565b5b612245888289016120a5565b9150509295509295909350565b600080600080600060a0868803121561226e5761226d612fa5565b5b600061227c88828901611f9f565b955050602061228d88828901611f9f565b945050604061229e88828901612101565b93505060606122af88828901612101565b925050608086013567ffffffffffffffff8111156122d0576122cf612fa0565b5b6122dc888289016120a5565b9150509295509295909350565b60008060408385031215612300576122ff612fa5565b5b600061230e85828601611f9f565b925050602061231f85828601612066565b9150509250929050565b600080604083850312156123405761233f612fa5565b5b600061234e85828601611f9f565b925050602061235f85828601612101565b9150509250929050565b600080604083850312156123805761237f612fa5565b5b600083013567ffffffffffffffff81111561239e5761239d612fa0565b5b6123aa8582860161200a565b925050602083013567ffffffffffffffff8111156123cb576123ca612fa0565b5b6123d785828601612038565b9150509250929050565b6000602082840312156123f7576123f6612fa5565b5b60006124058482850161207b565b91505092915050565b60006020828403121561242457612423612fa5565b5b600061243284828501612090565b91505092915050565b60006020828403121561245157612450612fa5565b5b600082013567ffffffffffffffff81111561246f5761246e612fa0565b5b61247b848285016120d3565b91505092915050565b60006020828403121561249a57612499612fa5565b5b60006124a884828501612101565b91505092915050565b6000806000606084860312156124ca576124c9612fa5565b5b60006124d886828701612101565b93505060206124e986828701611f9f565b92505060406124fa86828701612101565b9150509250925092565b60008060006040848603121561251d5761251c612fa5565b5b600061252b86828701612101565b935050602084013567ffffffffffffffff81111561254c5761254b612fa0565b5b61255886828701611fb4565b92509250509250925092565b60006125708383612831565b60208301905092915050565b61258581612d4c565b82525050565b600061259682612c95565b6125a08185612cc3565b93506125ab83612c85565b8060005b838110156125dc5781516125c38882612564565b97506125ce83612cb6565b9250506001810190506125af565b5085935050505092915050565b6125f281612d5e565b82525050565b600061260382612ca0565b61260d8185612cd4565b935061261d818560208601612dcf565b61262681612faa565b840191505092915050565b600061263c82612cab565b6126468185612ce5565b9350612656818560208601612dcf565b61265f81612faa565b840191505092915050565b6000612677602883612ce5565b915061268282612fc8565b604082019050919050565b600061269a602683612ce5565b91506126a582613017565b604082019050919050565b60006126bd602a83612ce5565b91506126c882613066565b604082019050919050565b60006126e0602e83612ce5565b91506126eb826130b5565b604082019050919050565b6000612703602583612ce5565b915061270e82613104565b604082019050919050565b6000612726602a83612ce5565b915061273182613153565b604082019050919050565b6000612749602083612ce5565b9150612754826131a2565b602082019050919050565b600061276c602883612ce5565b9150612777826131cb565b604082019050919050565b600061278f602983612ce5565b915061279a8261321a565b604082019050919050565b60006127b2602983612ce5565b91506127bd82613269565b604082019050919050565b60006127d5602883612ce5565b91506127e0826132b8565b604082019050919050565b60006127f8602183612ce5565b915061280382613307565b604082019050919050565b600061281b603483612ce5565b915061282682613356565b604082019050919050565b61283a81612db6565b82525050565b61284981612db6565b82525050565b6000602082019050612864600083018461257c565b92915050565b600060a08201905061287f600083018861257c565b61288c602083018761257c565b818103604083015261289e818661258b565b905081810360608301526128b2818561258b565b905081810360808301526128c681846125f8565b90509695505050505050565b600060a0820190506128e7600083018861257c565b6128f4602083018761257c565b6129016040830186612840565b61290e6060830185612840565b818103608083015261292081846125f8565b90509695505050505050565b60006020820190508181036000830152612946818461258b565b905092915050565b60006040820190508181036000830152612968818561258b565b9050818103602083015261297c818461258b565b90509392505050565b600060208201905061299a60008301846125e9565b92915050565b600060208201905081810360008301526129ba8184612631565b905092915050565b600060208201905081810360008301526129db8161266a565b9050919050565b600060208201905081810360008301526129fb8161268d565b9050919050565b60006020820190508181036000830152612a1b816126b0565b9050919050565b60006020820190508181036000830152612a3b816126d3565b9050919050565b60006020820190508181036000830152612a5b816126f6565b9050919050565b60006020820190508181036000830152612a7b81612719565b9050919050565b60006020820190508181036000830152612a9b8161273c565b9050919050565b60006020820190508181036000830152612abb8161275f565b9050919050565b60006020820190508181036000830152612adb81612782565b9050919050565b60006020820190508181036000830152612afb816127a5565b9050919050565b60006020820190508181036000830152612b1b816127c8565b9050919050565b60006020820190508181036000830152612b3b816127eb565b9050919050565b60006020820190508181036000830152612b5b8161280e565b9050919050565b6000602082019050612b776000830184612840565b92915050565b6000604082019050612b926000830185612840565b612b9f6020830184612840565b9392505050565b6000612bb0612bc1565b9050612bbc8282612e34565b919050565b6000604051905090565b600067ffffffffffffffff821115612be657612be5612f3b565b5b602082029050602081019050919050565b600067ffffffffffffffff821115612c1257612c11612f3b565b5b602082029050602081019050919050565b600067ffffffffffffffff821115612c3e57612c3d612f3b565b5b612c4782612faa565b9050602081019050919050565b600067ffffffffffffffff821115612c6f57612c6e612f3b565b5b612c7882612faa565b9050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b6000612d0182612db6565b9150612d0c83612db6565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612d4157612d40612eae565b5b828201905092915050565b6000612d5782612d96565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015612ded578082015181840152602081019050612dd2565b83811115612dfc576000848401525b50505050565b60006002820490506001821680612e1a57607f821691505b60208210811415612e2e57612e2d612edd565b5b50919050565b612e3d82612faa565b810181811067ffffffffffffffff82111715612e5c57612e5b612f3b565b5b80604052505050565b6000612e7082612db6565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612ea357612ea2612eae565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600060033d1115612f895760046000803e612f86600051612fbb565b90505b90565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160e01c9050919050565b7f455243313135353a204552433131353552656365697665722072656a6563746560008201527f6420746f6b656e73000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2061646472657373207a65726f206973206e6f742061207660008201527f616c6964206f776e657200000000000000000000000000000000000000000000602082015250565b7f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60008201527f6572206f7220617070726f766564000000000000000000000000000000000000602082015250565b7f455243313135353a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a20696e73756666696369656e742062616c616e636520666f60008201527f72207472616e7366657200000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f455243313135353a206275726e20616d6f756e74206578636565647320746f7460008201527f616c537570706c79000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2073657474696e6720617070726f76616c2073746174757360008201527f20666f722073656c660000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206163636f756e747320616e6420696473206c656e67746860008201527f206d69736d617463680000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060008201527f6d69736d61746368000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a207472616e7366657220746f206e6f6e2d4552433131353560008201527f526563656976657220696d706c656d656e746572000000000000000000000000602082015250565b600060443d10156133b557613438565b6133bd612bc1565b60043d036004823e80513d602482011167ffffffffffffffff821117156133e5575050613438565b808201805167ffffffffffffffff8111156134035750505050613438565b80602083010160043d038501811115613420575050505050613438565b61342f82602001850186612e34565b82955050505050505b90565b61344481612d4c565b811461344f57600080fd5b50565b61345b81612d5e565b811461346657600080fd5b50565b61347281612d6a565b811461347d57600080fd5b50565b61348981612db6565b811461349457600080fd5b5056fea2646970667358221220be611d58c81e9a3a6f5f8a515266abf907c54ab6755a9eee7983353b5698e07e64736f6c63430008070033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000005668747470733a2f2f6d6574616c68656164732e6d7970696e6174612e636c6f75642f697066732f516d635455736548716b583372426138516e6659645161326f576b746f4b683751626d7256465744756934646e792f00000000000000000000
-----Decoded View---------------
Arg [0] : _uri (string): https://metalheads.mypinata.cloud/ipfs/QmcTUseHqkX3rBa8QnfYdQa2oWktoKh7QbmrVFWDui4dny/
-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000020
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000056
Arg [2] : 68747470733a2f2f6d6574616c68656164732e6d7970696e6174612e636c6f75
Arg [3] : 642f697066732f516d635455736548716b583372426138516e6659645161326f
Arg [4] : 576b746f4b683751626d7256465744756934646e792f00000000000000000000
Deployed Bytecode Sourcemap
45219:1957:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27470:230;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26493:310;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;45370:89;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27214:105;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;46411:230;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29413:438;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;46652:184;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;45467:236;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27866:524;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;43946:122;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;45943:228;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5747:103;;;:::i;:::-;;5099:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28463:155;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;46177:228;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;43735:113;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;45709:228;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28690:168;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28930:406;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6005:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27470:230;27556:7;27603:1;27584:21;;:7;:21;;;;27576:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;27670:9;:13;27680:2;27670:13;;;;;;;;;;;:22;27684:7;27670:22;;;;;;;;;;;;;;;;27663:29;;27470:230;;;;:::o;26493:310::-;26595:4;26647:26;26632:41;;;:11;:41;;;;:110;;;;26705:37;26690:52;;;:11;:52;;;;26632:110;:163;;;;26759:36;26783:11;26759:23;:36::i;:::-;26632:163;26612:183;;26493:310;;;:::o;45370:89::-;4985:13;:11;:13::i;:::-;45436:15:::1;45444:6;45436:7;:15::i;:::-;45370:89:::0;:::o;27214:105::-;27274:13;27307:4;27300:11;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27214:105;;;:::o;46411:230::-;4985:13;:11;:13::i;:::-;46533:9:::1;46528:106;46552:5;;:12;;46548:1;:16;46528:106;;;46586:36;46592:5;;46598:1;46592:8;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;46602:11;46615:2;46586:36;;;;;;;;;;;::::0;:5:::1;:36::i;:::-;46566:3;;;;;:::i;:::-;;;;46528:106;;;;46411:230:::0;;;:::o;29413:438::-;29654:12;:10;:12::i;:::-;29646:20;;:4;:20;;;:60;;;;29670:36;29687:4;29693:12;:10;:12::i;:::-;29670:16;:36::i;:::-;29646:60;29624:156;;;;;;;;;;;;:::i;:::-;;;;;;;;;29791:52;29814:4;29820:2;29824:3;29829:7;29838:4;29791:22;:52::i;:::-;29413:438;;;;;:::o;46652:184::-;4985:13;:11;:13::i;:::-;46788:40:::1;46794:8;46804;46814:9;46788:40;;;;;;;;;;;::::0;:5:::1;:40::i;:::-;46652:184:::0;;;:::o;45467:236::-;4985:13;:11;:13::i;:::-;45595:9:::1;45590:106;45614:5;;:12;;45610:1;:16;45590:106;;;45648:36;45654:5;;45660:1;45654:8;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;45664:11;45677:2;45648:36;;;;;;;;;;;::::0;:5:::1;:36::i;:::-;45628:3;;;;;:::i;:::-;;;;45590:106;;;;45467:236:::0;;;:::o;27866:524::-;28022:16;28083:3;:10;28064:8;:15;:29;28056:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;28152:30;28199:8;:15;28185:30;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28152:63;;28233:9;28228:122;28252:8;:15;28248:1;:19;28228:122;;;28308:30;28318:8;28327:1;28318:11;;;;;;;;:::i;:::-;;;;;;;;28331:3;28335:1;28331:6;;;;;;;;:::i;:::-;;;;;;;;28308:9;:30::i;:::-;28289:13;28303:1;28289:16;;;;;;;;:::i;:::-;;;;;;;:49;;;;;28269:3;;;;:::i;:::-;;;28228:122;;;;28369:13;28362:20;;;27866:524;;;;:::o;43946:122::-;44003:4;44059:1;44027:29;44053:2;44027:25;:29::i;:::-;:33;44020:40;;43946:122;;;:::o;45943:228::-;4985:13;:11;:13::i;:::-;46064:9:::1;46059:105;46083:5;;:12;;46079:1;:16;46059:105;;;46117:35;46123:5;;46129:1;46123:8;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;46133:11;46146:1;46117:35;;;;;;;;;;;::::0;:5:::1;:35::i;:::-;46097:3;;;;;:::i;:::-;;;;46059:105;;;;45943:228:::0;;;:::o;5747:103::-;4985:13;:11;:13::i;:::-;5812:30:::1;5839:1;5812:18;:30::i;:::-;5747:103::o:0;5099:87::-;5145:7;5172:6;;;;;;;;;;;5165:13;;5099:87;:::o;28463:155::-;28558:52;28577:12;:10;:12::i;:::-;28591:8;28601;28558:18;:52::i;:::-;28463:155;;:::o;46177:228::-;4985:13;:11;:13::i;:::-;46298:9:::1;46293:105;46317:5;;:12;;46313:1;:16;46293:105;;;46351:35;46357:5;;46363:1;46357:8;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;46367:11;46380:1;46351:35;;;;;;;;;;;::::0;:5:::1;:35::i;:::-;46331:3;;;;;:::i;:::-;;;;46293:105;;;;46177:228:::0;;;:::o;43735:113::-;43797:7;43824:12;:16;43837:2;43824:16;;;;;;;;;;;;43817:23;;43735:113;;;:::o;45709:228::-;4985:13;:11;:13::i;:::-;45830:9:::1;45825:105;45849:5;;:12;;45845:1;:16;45825:105;;;45883:35;45889:5;;45895:1;45889:8;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;45899:11;45912:1;45883:35;;;;;;;;;;;::::0;:5:::1;:35::i;:::-;45863:3;;;;;:::i;:::-;;;;45825:105;;;;45709:228:::0;;;:::o;28690:168::-;28789:4;28813:18;:27;28832:7;28813:27;;;;;;;;;;;;;;;:37;28841:8;28813:37;;;;;;;;;;;;;;;;;;;;;;;;;28806:44;;28690:168;;;;:::o;28930:406::-;29146:12;:10;:12::i;:::-;29138:20;;:4;:20;;;:60;;;;29162:36;29179:4;29185:12;:10;:12::i;:::-;29162:16;:36::i;:::-;29138:60;29116:156;;;;;;;;;;;;:::i;:::-;;;;;;;;;29283:45;29301:4;29307:2;29311;29315:6;29323:4;29283:17;:45::i;:::-;28930:406;;;;;:::o;6005:201::-;4985:13;:11;:13::i;:::-;6114:1:::1;6094:22;;:8;:22;;;;6086:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;6170:28;6189:8;6170:18;:28::i;:::-;6005:201:::0;:::o;17774:157::-;17859:4;17898:25;17883:40;;;:11;:40;;;;17876:47;;17774:157;;;:::o;5264:132::-;5339:12;:10;:12::i;:::-;5328:23;;:7;:5;:7::i;:::-;:23;;;5320:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5264:132::o;33637:88::-;33711:6;33704:4;:13;;;;;;;;;;;;:::i;:::-;;33637:88;:::o;34111:729::-;34278:1;34264:16;;:2;:16;;;;34256:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;34331:16;34350:12;:10;:12::i;:::-;34331:31;;34373:20;34396:21;34414:2;34396:17;:21::i;:::-;34373:44;;34428:24;34455:25;34473:6;34455:17;:25::i;:::-;34428:52;;34493:66;34514:8;34532:1;34536:2;34540:3;34545:7;34554:4;34493:20;:66::i;:::-;34593:6;34572:9;:13;34582:2;34572:13;;;;;;;;;;;:17;34586:2;34572:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;34652:2;34615:52;;34648:1;34615:52;;34630:8;34615:52;;;34656:2;34660:6;34615:52;;;;;;;:::i;:::-;;;;;;;;34680:65;34700:8;34718:1;34722:2;34726:3;34731:7;34740:4;34680:19;:65::i;:::-;34758:74;34789:8;34807:1;34811:2;34815;34819:6;34827:4;34758:30;:74::i;:::-;34245:595;;;34111:729;;;;:::o;3650:98::-;3703:7;3730:10;3723:17;;3650:98;:::o;31647:1146::-;31874:7;:14;31860:3;:10;:28;31852:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;31966:1;31952:16;;:2;:16;;;;31944:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;32023:16;32042:12;:10;:12::i;:::-;32023:31;;32067:60;32088:8;32098:4;32104:2;32108:3;32113:7;32122:4;32067:20;:60::i;:::-;32145:9;32140:421;32164:3;:10;32160:1;:14;32140:421;;;32196:10;32209:3;32213:1;32209:6;;;;;;;;:::i;:::-;;;;;;;;32196:19;;32230:14;32247:7;32255:1;32247:10;;;;;;;;:::i;:::-;;;;;;;;32230:27;;32274:19;32296:9;:13;32306:2;32296:13;;;;;;;;;;;:19;32310:4;32296:19;;;;;;;;;;;;;;;;32274:41;;32353:6;32338:11;:21;;32330:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;32486:6;32472:11;:20;32450:9;:13;32460:2;32450:13;;;;;;;;;;;:19;32464:4;32450:19;;;;;;;;;;;;;;;:42;;;;32543:6;32522:9;:13;32532:2;32522:13;;;;;;;;;;;:17;32536:2;32522:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;32181:380;;;32176:3;;;;:::i;:::-;;;32140:421;;;;32608:2;32578:47;;32602:4;32578:47;;32592:8;32578:47;;;32612:3;32617:7;32578:47;;;;;;;:::i;:::-;;;;;;;;32638:59;32658:8;32668:4;32674:2;32678:3;32683:7;32692:4;32638:19;:59::i;:::-;32710:75;32746:8;32756:4;32762:2;32766:3;32771:7;32780:4;32710:35;:75::i;:::-;31841:952;31647:1146;;;;;:::o;6366:191::-;6440:16;6459:6;;;;;;;;;;;6440:25;;6485:8;6476:6;;:17;;;;;;;;;;;;;;;;;;6540:8;6509:40;;6530:8;6509:40;;;;;;;;;;;;6429:128;6366:191;:::o;38524:331::-;38679:8;38670:17;;:5;:17;;;;38662:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;38782:8;38744:18;:25;38763:5;38744:25;;;;;;;;;;;;;;;:35;38770:8;38744:35;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;38828:8;38806:41;;38821:5;38806:41;;;38838:8;38806:41;;;;;;:::i;:::-;;;;;;;;38524:331;;;:::o;30315:974::-;30517:1;30503:16;;:2;:16;;;;30495:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;30574:16;30593:12;:10;:12::i;:::-;30574:31;;30616:20;30639:21;30657:2;30639:17;:21::i;:::-;30616:44;;30671:24;30698:25;30716:6;30698:17;:25::i;:::-;30671:52;;30736:60;30757:8;30767:4;30773:2;30777:3;30782:7;30791:4;30736:20;:60::i;:::-;30809:19;30831:9;:13;30841:2;30831:13;;;;;;;;;;;:19;30845:4;30831:19;;;;;;;;;;;;;;;;30809:41;;30884:6;30869:11;:21;;30861:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;31009:6;30995:11;:20;30973:9;:13;30983:2;30973:13;;;;;;;;;;;:19;30987:4;30973:19;;;;;;;;;;;;;;;:42;;;;31058:6;31037:9;:13;31047:2;31037:13;;;;;;;;;;;:17;31051:2;31037:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;31113:2;31082:46;;31107:4;31082:46;;31097:8;31082:46;;;31117:2;31121:6;31082:46;;;;;;;:::i;:::-;;;;;;;;31141:59;31161:8;31171:4;31177:2;31181:3;31186:7;31195:4;31141:19;:59::i;:::-;31213:68;31244:8;31254:4;31260:2;31264;31268:6;31276:4;31213:30;:68::i;:::-;30484:805;;;;30315:974;;;;;:::o;42790:198::-;42856:16;42885:22;42924:1;42910:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42885:41;;42948:7;42937:5;42943:1;42937:8;;;;;;;;:::i;:::-;;;;;;;:18;;;;;42975:5;42968:12;;;42790:198;;;:::o;46844:329::-;47099:66;47126:8;47136:4;47142:2;47146:3;47151:7;47160:4;47099:26;:66::i;:::-;46844:329;;;;;;:::o;40989:220::-;;;;;;;:::o;41217:744::-;41432:15;:2;:13;;;:15::i;:::-;41428:526;;;41485:2;41468:38;;;41507:8;41517:4;41523:2;41527:6;41535:4;41468:72;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;41464:479;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;41816:6;41809:14;;;;;;;;;;;:::i;:::-;;;;;;;;41464:479;;;41865:62;;;;;;;;;;:::i;:::-;;;;;;;;41464:479;41602:43;;;41590:55;;;:8;:55;;;;41586:154;;41670:50;;;;;;;;;;:::i;:::-;;;;;;;;41586:154;41541:214;41428:526;41217:744;;;;;;:::o;41969:813::-;42209:15;:2;:13;;;:15::i;:::-;42205:570;;;42262:2;42245:43;;;42289:8;42299:4;42305:3;42310:7;42319:4;42245:79;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;42241:523;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;42637:6;42630:14;;;;;;;;;;;:::i;:::-;;;;;;;;42241:523;;;42686:62;;;;;;;;;;:::i;:::-;;;;;;;;42241:523;42418:48;;;42406:60;;;:8;:60;;;;42402:159;;42491:50;;;;;;;;;;:::i;:::-;;;;;;;;42402:159;42325:251;42205:570;41969:813;;;;;;:::o;44143:931::-;44382:66;44409:8;44419:4;44425:2;44429:3;44434:7;44443:4;44382:26;:66::i;:::-;44481:1;44465:18;;:4;:18;;;44461:160;;;44505:9;44500:110;44524:3;:10;44520:1;:14;44500:110;;;44584:7;44592:1;44584:10;;;;;;;;:::i;:::-;;;;;;;;44560:12;:20;44573:3;44577:1;44573:6;;;;;;;;:::i;:::-;;;;;;;;44560:20;;;;;;;;;;;;:34;;;;;;;:::i;:::-;;;;;;;;44536:3;;;;:::i;:::-;;;44500:110;;;;44461:160;44651:1;44637:16;;:2;:16;;;44633:434;;;44675:9;44670:386;44694:3;:10;44690:1;:14;44670:386;;;44730:10;44743:3;44747:1;44743:6;;;;;;;;:::i;:::-;;;;;;;;44730:19;;44768:14;44785:7;44793:1;44785:10;;;;;;;;:::i;:::-;;;;;;;;44768:27;;44814:14;44831:12;:16;44844:2;44831:16;;;;;;;;;;;;44814:33;;44884:6;44874;:16;;44866:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;45015:6;45006;:15;44987:12;:16;45000:2;44987:16;;;;;;;;;;;:34;;;;44711:345;;;44706:3;;;;:::i;:::-;;;44670:386;;;;44633:434;44143:931;;;;;;:::o;7797:326::-;7857:4;8114:1;8092:7;:19;;;:23;8085:30;;7797:326;;;:::o;39813:221::-;;;;;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;24:722: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:143;;;404:79;;:::i;:::-;350:143;517:1;502:238;527:6;524:1;521:13;502:238;;;595:3;624:37;657:3;645:10;624:37;:::i;:::-;619:3;612:50;691:4;686:3;682:14;675:21;;725:4;720:3;716:14;709:21;;562:178;549:1;546;542:9;537:14;;502:238;;;506:14;126:620;;24:722;;;;;:::o;769:::-;865:5;890:81;906:64;963:6;906:64;:::i;:::-;890:81;:::i;:::-;881:90;;991:5;1020:6;1013:5;1006:21;1054:4;1047:5;1043:16;1036:23;;1080:6;1130:3;1122:4;1114:6;1110:17;1105:3;1101:27;1098:36;1095:143;;;1149:79;;:::i;:::-;1095:143;1262:1;1247:238;1272:6;1269:1;1266:13;1247:238;;;1340:3;1369:37;1402:3;1390:10;1369:37;:::i;:::-;1364:3;1357:50;1436:4;1431:3;1427:14;1420:21;;1470:4;1465:3;1461:14;1454:21;;1307:178;1294:1;1291;1287:9;1282:14;;1247:238;;;1251:14;871:620;;769:722;;;;;:::o;1497:410::-;1574:5;1599:65;1615:48;1656:6;1615:48;:::i;:::-;1599:65;:::i;:::-;1590:74;;1687:6;1680:5;1673:21;1725:4;1718:5;1714:16;1763:3;1754:6;1749:3;1745:16;1742:25;1739:112;;;1770:79;;:::i;:::-;1739:112;1860:41;1894:6;1889:3;1884;1860:41;:::i;:::-;1580:327;1497:410;;;;;:::o;1913:412::-;1991:5;2016:66;2032:49;2074:6;2032:49;:::i;:::-;2016:66;:::i;:::-;2007:75;;2105:6;2098:5;2091:21;2143:4;2136:5;2132:16;2181:3;2172:6;2167:3;2163:16;2160:25;2157:112;;;2188:79;;:::i;:::-;2157:112;2278:41;2312:6;2307:3;2302;2278:41;:::i;:::-;1997:328;1913:412;;;;;:::o;2331:139::-;2377:5;2415:6;2402:20;2393:29;;2431:33;2458:5;2431:33;:::i;:::-;2331:139;;;;:::o;2493:568::-;2566:8;2576:6;2626:3;2619:4;2611:6;2607:17;2603:27;2593:122;;2634:79;;:::i;:::-;2593:122;2747:6;2734:20;2724:30;;2777:18;2769:6;2766:30;2763:117;;;2799:79;;:::i;:::-;2763:117;2913:4;2905:6;2901:17;2889:29;;2967:3;2959:4;2951:6;2947:17;2937:8;2933:32;2930:41;2927:128;;;2974:79;;:::i;:::-;2927:128;2493:568;;;;;:::o;3084:370::-;3155:5;3204:3;3197:4;3189:6;3185:17;3181:27;3171:122;;3212:79;;:::i;:::-;3171:122;3329:6;3316:20;3354:94;3444:3;3436:6;3429:4;3421:6;3417:17;3354:94;:::i;:::-;3345:103;;3161:293;3084:370;;;;:::o;3477:::-;3548:5;3597:3;3590:4;3582:6;3578:17;3574:27;3564:122;;3605:79;;:::i;:::-;3564:122;3722:6;3709:20;3747:94;3837:3;3829:6;3822:4;3814:6;3810:17;3747:94;:::i;:::-;3738:103;;3554:293;3477:370;;;;:::o;3853:133::-;3896:5;3934:6;3921:20;3912:29;;3950:30;3974:5;3950:30;:::i;:::-;3853:133;;;;:::o;3992:137::-;4037:5;4075:6;4062:20;4053:29;;4091:32;4117:5;4091:32;:::i;:::-;3992:137;;;;:::o;4135:141::-;4191:5;4222:6;4216:13;4207:22;;4238:32;4264:5;4238:32;:::i;:::-;4135:141;;;;:::o;4295:338::-;4350:5;4399:3;4392:4;4384:6;4380:17;4376:27;4366:122;;4407:79;;:::i;:::-;4366:122;4524:6;4511:20;4549:78;4623:3;4615:6;4608:4;4600:6;4596:17;4549:78;:::i;:::-;4540:87;;4356:277;4295:338;;;;:::o;4653:340::-;4709:5;4758:3;4751:4;4743:6;4739:17;4735:27;4725:122;;4766:79;;:::i;:::-;4725:122;4883:6;4870:20;4908:79;4983:3;4975:6;4968:4;4960:6;4956:17;4908:79;:::i;:::-;4899:88;;4715:278;4653:340;;;;:::o;4999:139::-;5045:5;5083:6;5070:20;5061:29;;5099:33;5126:5;5099:33;:::i;:::-;4999:139;;;;:::o;5144:329::-;5203:6;5252:2;5240:9;5231:7;5227:23;5223:32;5220:119;;;5258:79;;:::i;:::-;5220:119;5378:1;5403:53;5448:7;5439:6;5428:9;5424:22;5403:53;:::i;:::-;5393:63;;5349:117;5144:329;;;;:::o;5479:474::-;5547:6;5555;5604:2;5592:9;5583:7;5579:23;5575:32;5572:119;;;5610:79;;:::i;:::-;5572:119;5730:1;5755:53;5800:7;5791:6;5780:9;5776:22;5755:53;:::i;:::-;5745:63;;5701:117;5857:2;5883:53;5928:7;5919:6;5908:9;5904:22;5883:53;:::i;:::-;5873:63;;5828:118;5479:474;;;;;:::o;5959:1509::-;6113:6;6121;6129;6137;6145;6194:3;6182:9;6173:7;6169:23;6165:33;6162:120;;;6201:79;;:::i;:::-;6162:120;6321:1;6346:53;6391:7;6382:6;6371:9;6367:22;6346:53;:::i;:::-;6336:63;;6292:117;6448:2;6474:53;6519:7;6510:6;6499:9;6495:22;6474:53;:::i;:::-;6464:63;;6419:118;6604:2;6593:9;6589:18;6576:32;6635:18;6627:6;6624:30;6621:117;;;6657:79;;:::i;:::-;6621:117;6762:78;6832:7;6823:6;6812:9;6808:22;6762:78;:::i;:::-;6752:88;;6547:303;6917:2;6906:9;6902:18;6889:32;6948:18;6940:6;6937:30;6934:117;;;6970:79;;:::i;:::-;6934:117;7075:78;7145:7;7136:6;7125:9;7121:22;7075:78;:::i;:::-;7065:88;;6860:303;7230:3;7219:9;7215:19;7202:33;7262:18;7254:6;7251:30;7248:117;;;7284:79;;:::i;:::-;7248:117;7389:62;7443:7;7434:6;7423:9;7419:22;7389:62;:::i;:::-;7379:72;;7173:288;5959:1509;;;;;;;;:::o;7474:1089::-;7578:6;7586;7594;7602;7610;7659:3;7647:9;7638:7;7634:23;7630:33;7627:120;;;7666:79;;:::i;:::-;7627:120;7786:1;7811:53;7856:7;7847:6;7836:9;7832:22;7811:53;:::i;:::-;7801:63;;7757:117;7913:2;7939:53;7984:7;7975:6;7964:9;7960:22;7939:53;:::i;:::-;7929:63;;7884:118;8041:2;8067:53;8112:7;8103:6;8092:9;8088:22;8067:53;:::i;:::-;8057:63;;8012:118;8169:2;8195:53;8240:7;8231:6;8220:9;8216:22;8195:53;:::i;:::-;8185:63;;8140:118;8325:3;8314:9;8310:19;8297:33;8357:18;8349:6;8346:30;8343:117;;;8379:79;;:::i;:::-;8343:117;8484:62;8538:7;8529:6;8518:9;8514:22;8484:62;:::i;:::-;8474:72;;8268:288;7474:1089;;;;;;;;:::o;8569:468::-;8634:6;8642;8691:2;8679:9;8670:7;8666:23;8662:32;8659:119;;;8697:79;;:::i;:::-;8659:119;8817:1;8842:53;8887:7;8878:6;8867:9;8863:22;8842:53;:::i;:::-;8832:63;;8788:117;8944:2;8970:50;9012:7;9003:6;8992:9;8988:22;8970:50;:::i;:::-;8960:60;;8915:115;8569:468;;;;;:::o;9043:474::-;9111:6;9119;9168:2;9156:9;9147:7;9143:23;9139:32;9136:119;;;9174:79;;:::i;:::-;9136:119;9294:1;9319:53;9364:7;9355:6;9344:9;9340:22;9319:53;:::i;:::-;9309:63;;9265:117;9421:2;9447:53;9492:7;9483:6;9472:9;9468:22;9447:53;:::i;:::-;9437:63;;9392:118;9043:474;;;;;:::o;9523:894::-;9641:6;9649;9698:2;9686:9;9677:7;9673:23;9669:32;9666:119;;;9704:79;;:::i;:::-;9666:119;9852:1;9841:9;9837:17;9824:31;9882:18;9874:6;9871:30;9868:117;;;9904:79;;:::i;:::-;9868:117;10009:78;10079:7;10070:6;10059:9;10055:22;10009:78;:::i;:::-;9999:88;;9795:302;10164:2;10153:9;10149:18;10136:32;10195:18;10187:6;10184:30;10181:117;;;10217:79;;:::i;:::-;10181:117;10322:78;10392:7;10383:6;10372:9;10368:22;10322:78;:::i;:::-;10312:88;;10107:303;9523:894;;;;;:::o;10423:327::-;10481:6;10530:2;10518:9;10509:7;10505:23;10501:32;10498:119;;;10536:79;;:::i;:::-;10498:119;10656:1;10681:52;10725:7;10716:6;10705:9;10701:22;10681:52;:::i;:::-;10671:62;;10627:116;10423:327;;;;:::o;10756:349::-;10825:6;10874:2;10862:9;10853:7;10849:23;10845:32;10842:119;;;10880:79;;:::i;:::-;10842:119;11000:1;11025:63;11080:7;11071:6;11060:9;11056:22;11025:63;:::i;:::-;11015:73;;10971:127;10756:349;;;;:::o;11111:509::-;11180:6;11229:2;11217:9;11208:7;11204:23;11200:32;11197:119;;;11235:79;;:::i;:::-;11197:119;11383:1;11372:9;11368:17;11355:31;11413:18;11405:6;11402:30;11399:117;;;11435:79;;:::i;:::-;11399:117;11540:63;11595:7;11586:6;11575:9;11571:22;11540:63;:::i;:::-;11530:73;;11326:287;11111:509;;;;:::o;11626:329::-;11685:6;11734:2;11722:9;11713:7;11709:23;11705:32;11702:119;;;11740:79;;:::i;:::-;11702:119;11860:1;11885:53;11930:7;11921:6;11910:9;11906:22;11885:53;:::i;:::-;11875:63;;11831:117;11626:329;;;;:::o;11961:619::-;12038:6;12046;12054;12103:2;12091:9;12082:7;12078:23;12074:32;12071:119;;;12109:79;;:::i;:::-;12071:119;12229:1;12254:53;12299:7;12290:6;12279:9;12275:22;12254:53;:::i;:::-;12244:63;;12200:117;12356:2;12382:53;12427:7;12418:6;12407:9;12403:22;12382:53;:::i;:::-;12372:63;;12327:118;12484:2;12510:53;12555:7;12546:6;12535:9;12531:22;12510:53;:::i;:::-;12500:63;;12455:118;11961:619;;;;;:::o;12586:704::-;12681:6;12689;12697;12746:2;12734:9;12725:7;12721:23;12717:32;12714:119;;;12752:79;;:::i;:::-;12714:119;12872:1;12897:53;12942:7;12933:6;12922:9;12918:22;12897:53;:::i;:::-;12887:63;;12843:117;13027:2;13016:9;13012:18;12999:32;13058:18;13050:6;13047:30;13044:117;;;13080:79;;:::i;:::-;13044:117;13193:80;13265:7;13256:6;13245:9;13241:22;13193:80;:::i;:::-;13175:98;;;;12970:313;12586:704;;;;;:::o;13296:179::-;13365:10;13386:46;13428:3;13420:6;13386:46;:::i;:::-;13464:4;13459:3;13455:14;13441:28;;13296:179;;;;:::o;13481:118::-;13568:24;13586:5;13568:24;:::i;:::-;13563:3;13556:37;13481:118;;:::o;13635:732::-;13754:3;13783:54;13831:5;13783:54;:::i;:::-;13853:86;13932:6;13927:3;13853:86;:::i;:::-;13846:93;;13963:56;14013:5;13963:56;:::i;:::-;14042:7;14073:1;14058:284;14083:6;14080:1;14077:13;14058:284;;;14159:6;14153:13;14186:63;14245:3;14230:13;14186:63;:::i;:::-;14179:70;;14272:60;14325:6;14272:60;:::i;:::-;14262:70;;14118:224;14105:1;14102;14098:9;14093:14;;14058:284;;;14062:14;14358:3;14351:10;;13759:608;;;13635:732;;;;:::o;14373:109::-;14454:21;14469:5;14454:21;:::i;:::-;14449:3;14442:34;14373:109;;:::o;14488:360::-;14574:3;14602:38;14634:5;14602:38;:::i;:::-;14656:70;14719:6;14714:3;14656:70;:::i;:::-;14649:77;;14735:52;14780:6;14775:3;14768:4;14761:5;14757:16;14735:52;:::i;:::-;14812:29;14834:6;14812:29;:::i;:::-;14807:3;14803:39;14796:46;;14578:270;14488:360;;;;:::o;14854:364::-;14942:3;14970:39;15003:5;14970:39;:::i;:::-;15025:71;15089:6;15084:3;15025:71;:::i;:::-;15018:78;;15105:52;15150:6;15145:3;15138:4;15131:5;15127:16;15105:52;:::i;:::-;15182:29;15204:6;15182:29;:::i;:::-;15177:3;15173:39;15166:46;;14946:272;14854:364;;;;:::o;15224:366::-;15366:3;15387:67;15451:2;15446:3;15387:67;:::i;:::-;15380:74;;15463:93;15552:3;15463:93;:::i;:::-;15581:2;15576:3;15572:12;15565:19;;15224:366;;;:::o;15596:::-;15738:3;15759:67;15823:2;15818:3;15759:67;:::i;:::-;15752:74;;15835:93;15924:3;15835:93;:::i;:::-;15953:2;15948:3;15944:12;15937:19;;15596:366;;;:::o;15968:::-;16110:3;16131:67;16195:2;16190:3;16131:67;:::i;:::-;16124:74;;16207:93;16296:3;16207:93;:::i;:::-;16325:2;16320:3;16316:12;16309:19;;15968:366;;;:::o;16340:::-;16482:3;16503:67;16567:2;16562:3;16503:67;:::i;:::-;16496:74;;16579:93;16668:3;16579:93;:::i;:::-;16697:2;16692:3;16688:12;16681:19;;16340:366;;;:::o;16712:::-;16854:3;16875:67;16939:2;16934:3;16875:67;:::i;:::-;16868:74;;16951:93;17040:3;16951:93;:::i;:::-;17069:2;17064:3;17060:12;17053:19;;16712:366;;;:::o;17084:::-;17226:3;17247:67;17311:2;17306:3;17247:67;:::i;:::-;17240:74;;17323:93;17412:3;17323:93;:::i;:::-;17441:2;17436:3;17432:12;17425:19;;17084:366;;;:::o;17456:::-;17598:3;17619:67;17683:2;17678:3;17619:67;:::i;:::-;17612:74;;17695:93;17784:3;17695:93;:::i;:::-;17813:2;17808:3;17804:12;17797:19;;17456:366;;;:::o;17828:::-;17970:3;17991:67;18055:2;18050:3;17991:67;:::i;:::-;17984:74;;18067:93;18156:3;18067:93;:::i;:::-;18185:2;18180:3;18176:12;18169:19;;17828:366;;;:::o;18200:::-;18342:3;18363:67;18427:2;18422:3;18363:67;:::i;:::-;18356:74;;18439:93;18528:3;18439:93;:::i;:::-;18557:2;18552:3;18548:12;18541:19;;18200:366;;;:::o;18572:::-;18714:3;18735:67;18799:2;18794:3;18735:67;:::i;:::-;18728:74;;18811:93;18900:3;18811:93;:::i;:::-;18929:2;18924:3;18920:12;18913:19;;18572:366;;;:::o;18944:::-;19086:3;19107:67;19171:2;19166:3;19107:67;:::i;:::-;19100:74;;19183:93;19272:3;19183:93;:::i;:::-;19301:2;19296:3;19292:12;19285:19;;18944:366;;;:::o;19316:::-;19458:3;19479:67;19543:2;19538:3;19479:67;:::i;:::-;19472:74;;19555:93;19644:3;19555:93;:::i;:::-;19673:2;19668:3;19664:12;19657:19;;19316:366;;;:::o;19688:::-;19830:3;19851:67;19915:2;19910:3;19851:67;:::i;:::-;19844:74;;19927:93;20016:3;19927:93;:::i;:::-;20045:2;20040:3;20036:12;20029:19;;19688:366;;;:::o;20060:108::-;20137:24;20155:5;20137:24;:::i;:::-;20132:3;20125:37;20060:108;;:::o;20174:118::-;20261:24;20279:5;20261:24;:::i;:::-;20256:3;20249:37;20174:118;;:::o;20298:222::-;20391:4;20429:2;20418:9;20414:18;20406:26;;20442:71;20510:1;20499:9;20495:17;20486:6;20442:71;:::i;:::-;20298:222;;;;:::o;20526:1053::-;20849:4;20887:3;20876:9;20872:19;20864:27;;20901:71;20969:1;20958:9;20954:17;20945:6;20901:71;:::i;:::-;20982:72;21050:2;21039:9;21035:18;21026:6;20982:72;:::i;:::-;21101:9;21095:4;21091:20;21086:2;21075:9;21071:18;21064:48;21129:108;21232:4;21223:6;21129:108;:::i;:::-;21121:116;;21284:9;21278:4;21274:20;21269:2;21258:9;21254:18;21247:48;21312:108;21415:4;21406:6;21312:108;:::i;:::-;21304:116;;21468:9;21462:4;21458:20;21452:3;21441:9;21437:19;21430:49;21496:76;21567:4;21558:6;21496:76;:::i;:::-;21488:84;;20526:1053;;;;;;;;:::o;21585:751::-;21808:4;21846:3;21835:9;21831:19;21823:27;;21860:71;21928:1;21917:9;21913:17;21904:6;21860:71;:::i;:::-;21941:72;22009:2;21998:9;21994:18;21985:6;21941:72;:::i;:::-;22023;22091:2;22080:9;22076:18;22067:6;22023:72;:::i;:::-;22105;22173:2;22162:9;22158:18;22149:6;22105:72;:::i;:::-;22225:9;22219:4;22215:20;22209:3;22198:9;22194:19;22187:49;22253:76;22324:4;22315:6;22253:76;:::i;:::-;22245:84;;21585:751;;;;;;;;:::o;22342:373::-;22485:4;22523:2;22512:9;22508:18;22500:26;;22572:9;22566:4;22562:20;22558:1;22547:9;22543:17;22536:47;22600:108;22703:4;22694:6;22600:108;:::i;:::-;22592:116;;22342:373;;;;:::o;22721:634::-;22942:4;22980:2;22969:9;22965:18;22957:26;;23029:9;23023:4;23019:20;23015:1;23004:9;23000:17;22993:47;23057:108;23160:4;23151:6;23057:108;:::i;:::-;23049:116;;23212:9;23206:4;23202:20;23197:2;23186:9;23182:18;23175:48;23240:108;23343:4;23334:6;23240:108;:::i;:::-;23232:116;;22721:634;;;;;:::o;23361:210::-;23448:4;23486:2;23475:9;23471:18;23463:26;;23499:65;23561:1;23550:9;23546:17;23537:6;23499:65;:::i;:::-;23361:210;;;;:::o;23577:313::-;23690:4;23728:2;23717:9;23713:18;23705:26;;23777:9;23771:4;23767:20;23763:1;23752:9;23748:17;23741:47;23805:78;23878:4;23869:6;23805:78;:::i;:::-;23797:86;;23577:313;;;;:::o;23896:419::-;24062:4;24100:2;24089:9;24085:18;24077:26;;24149:9;24143:4;24139:20;24135:1;24124:9;24120:17;24113:47;24177:131;24303:4;24177:131;:::i;:::-;24169:139;;23896:419;;;:::o;24321:::-;24487:4;24525:2;24514:9;24510:18;24502:26;;24574:9;24568:4;24564:20;24560:1;24549:9;24545:17;24538:47;24602:131;24728:4;24602:131;:::i;:::-;24594:139;;24321:419;;;:::o;24746:::-;24912:4;24950:2;24939:9;24935:18;24927:26;;24999:9;24993:4;24989:20;24985:1;24974:9;24970:17;24963:47;25027:131;25153:4;25027:131;:::i;:::-;25019:139;;24746:419;;;:::o;25171:::-;25337:4;25375:2;25364:9;25360:18;25352:26;;25424:9;25418:4;25414:20;25410:1;25399:9;25395:17;25388:47;25452:131;25578:4;25452:131;:::i;:::-;25444:139;;25171:419;;;:::o;25596:::-;25762:4;25800:2;25789:9;25785:18;25777:26;;25849:9;25843:4;25839:20;25835:1;25824:9;25820:17;25813:47;25877:131;26003:4;25877:131;:::i;:::-;25869:139;;25596:419;;;:::o;26021:::-;26187:4;26225:2;26214:9;26210:18;26202:26;;26274:9;26268:4;26264:20;26260:1;26249:9;26245:17;26238:47;26302:131;26428:4;26302:131;:::i;:::-;26294:139;;26021:419;;;:::o;26446:::-;26612:4;26650:2;26639:9;26635:18;26627:26;;26699:9;26693:4;26689:20;26685:1;26674:9;26670:17;26663:47;26727:131;26853:4;26727:131;:::i;:::-;26719:139;;26446:419;;;:::o;26871:::-;27037:4;27075:2;27064:9;27060:18;27052:26;;27124:9;27118:4;27114:20;27110:1;27099:9;27095:17;27088:47;27152:131;27278:4;27152:131;:::i;:::-;27144:139;;26871:419;;;:::o;27296:::-;27462:4;27500:2;27489:9;27485:18;27477:26;;27549:9;27543:4;27539:20;27535:1;27524:9;27520:17;27513:47;27577:131;27703:4;27577:131;:::i;:::-;27569:139;;27296:419;;;:::o;27721:::-;27887:4;27925:2;27914:9;27910:18;27902:26;;27974:9;27968:4;27964:20;27960:1;27949:9;27945:17;27938:47;28002:131;28128:4;28002:131;:::i;:::-;27994:139;;27721:419;;;:::o;28146:::-;28312:4;28350:2;28339:9;28335:18;28327:26;;28399:9;28393:4;28389:20;28385:1;28374:9;28370:17;28363:47;28427:131;28553:4;28427:131;:::i;:::-;28419:139;;28146:419;;;:::o;28571:::-;28737:4;28775:2;28764:9;28760:18;28752:26;;28824:9;28818:4;28814:20;28810:1;28799:9;28795:17;28788:47;28852:131;28978:4;28852:131;:::i;:::-;28844:139;;28571:419;;;:::o;28996:::-;29162:4;29200:2;29189:9;29185:18;29177:26;;29249:9;29243:4;29239:20;29235:1;29224:9;29220:17;29213:47;29277:131;29403:4;29277:131;:::i;:::-;29269:139;;28996:419;;;:::o;29421:222::-;29514:4;29552:2;29541:9;29537:18;29529:26;;29565:71;29633:1;29622:9;29618:17;29609:6;29565:71;:::i;:::-;29421:222;;;;:::o;29649:332::-;29770:4;29808:2;29797:9;29793:18;29785:26;;29821:71;29889:1;29878:9;29874:17;29865:6;29821:71;:::i;:::-;29902:72;29970:2;29959:9;29955:18;29946:6;29902:72;:::i;:::-;29649:332;;;;;:::o;29987:129::-;30021:6;30048:20;;:::i;:::-;30038:30;;30077:33;30105:4;30097:6;30077:33;:::i;:::-;29987:129;;;:::o;30122:75::-;30155:6;30188:2;30182:9;30172:19;;30122:75;:::o;30203:311::-;30280:4;30370:18;30362:6;30359:30;30356:56;;;30392:18;;:::i;:::-;30356:56;30442:4;30434:6;30430:17;30422:25;;30502:4;30496;30492:15;30484:23;;30203:311;;;:::o;30520:::-;30597:4;30687:18;30679:6;30676:30;30673:56;;;30709:18;;:::i;:::-;30673:56;30759:4;30751:6;30747:17;30739:25;;30819:4;30813;30809:15;30801:23;;30520:311;;;:::o;30837:307::-;30898:4;30988:18;30980:6;30977:30;30974:56;;;31010:18;;:::i;:::-;30974:56;31048:29;31070:6;31048:29;:::i;:::-;31040:37;;31132:4;31126;31122:15;31114:23;;30837:307;;;:::o;31150:308::-;31212:4;31302:18;31294:6;31291:30;31288:56;;;31324:18;;:::i;:::-;31288:56;31362:29;31384:6;31362:29;:::i;:::-;31354:37;;31446:4;31440;31436:15;31428:23;;31150:308;;;:::o;31464:132::-;31531:4;31554:3;31546:11;;31584:4;31579:3;31575:14;31567:22;;31464:132;;;:::o;31602:114::-;31669:6;31703:5;31697:12;31687:22;;31602:114;;;:::o;31722:98::-;31773:6;31807:5;31801:12;31791:22;;31722:98;;;:::o;31826:99::-;31878:6;31912:5;31906:12;31896:22;;31826:99;;;:::o;31931:113::-;32001:4;32033;32028:3;32024:14;32016:22;;31931:113;;;:::o;32050:184::-;32149:11;32183:6;32178:3;32171:19;32223:4;32218:3;32214:14;32199:29;;32050:184;;;;:::o;32240:168::-;32323:11;32357:6;32352:3;32345:19;32397:4;32392:3;32388:14;32373:29;;32240:168;;;;:::o;32414:169::-;32498:11;32532:6;32527:3;32520:19;32572:4;32567:3;32563:14;32548:29;;32414:169;;;;:::o;32589:305::-;32629:3;32648:20;32666:1;32648:20;:::i;:::-;32643:25;;32682:20;32700:1;32682:20;:::i;:::-;32677:25;;32836:1;32768:66;32764:74;32761:1;32758:81;32755:107;;;32842:18;;:::i;:::-;32755:107;32886:1;32883;32879:9;32872:16;;32589:305;;;;:::o;32900:96::-;32937:7;32966:24;32984:5;32966:24;:::i;:::-;32955:35;;32900:96;;;:::o;33002:90::-;33036:7;33079:5;33072:13;33065:21;33054:32;;33002:90;;;:::o;33098:149::-;33134:7;33174:66;33167:5;33163:78;33152:89;;33098:149;;;:::o;33253:126::-;33290:7;33330:42;33323:5;33319:54;33308:65;;33253:126;;;:::o;33385:77::-;33422:7;33451:5;33440:16;;33385:77;;;:::o;33468:154::-;33552:6;33547:3;33542;33529:30;33614:1;33605:6;33600:3;33596:16;33589:27;33468:154;;;:::o;33628:307::-;33696:1;33706:113;33720:6;33717:1;33714:13;33706:113;;;33805:1;33800:3;33796:11;33790:18;33786:1;33781:3;33777:11;33770:39;33742:2;33739:1;33735:10;33730:15;;33706:113;;;33837:6;33834:1;33831:13;33828:101;;;33917:1;33908:6;33903:3;33899:16;33892:27;33828:101;33677:258;33628:307;;;:::o;33941:320::-;33985:6;34022:1;34016:4;34012:12;34002:22;;34069:1;34063:4;34059:12;34090:18;34080:81;;34146:4;34138:6;34134:17;34124:27;;34080:81;34208:2;34200:6;34197:14;34177:18;34174:38;34171:84;;;34227:18;;:::i;:::-;34171:84;33992:269;33941:320;;;:::o;34267:281::-;34350:27;34372:4;34350:27;:::i;:::-;34342:6;34338:40;34480:6;34468:10;34465:22;34444:18;34432:10;34429:34;34426:62;34423:88;;;34491:18;;:::i;:::-;34423:88;34531:10;34527:2;34520:22;34310:238;34267:281;;:::o;34554:233::-;34593:3;34616:24;34634:5;34616:24;:::i;:::-;34607:33;;34662:66;34655:5;34652:77;34649:103;;;34732:18;;:::i;:::-;34649:103;34779:1;34772:5;34768:13;34761:20;;34554:233;;;:::o;34793:180::-;34841:77;34838:1;34831:88;34938:4;34935:1;34928:15;34962:4;34959:1;34952:15;34979:180;35027:77;35024:1;35017:88;35124:4;35121:1;35114:15;35148:4;35145:1;35138:15;35165:180;35213:77;35210:1;35203:88;35310:4;35307:1;35300:15;35334:4;35331:1;35324:15;35351:180;35399:77;35396:1;35389:88;35496:4;35493:1;35486:15;35520:4;35517:1;35510:15;35537:183;35572:3;35610:1;35592:16;35589:23;35586:128;;;35648:1;35645;35642;35627:23;35670:34;35701:1;35695:8;35670:34;:::i;:::-;35663:41;;35586:128;35537:183;:::o;35726:117::-;35835:1;35832;35825:12;35849:117;35958:1;35955;35948:12;35972:117;36081:1;36078;36071:12;36095:117;36204:1;36201;36194:12;36218:117;36327:1;36324;36317:12;36341:117;36450:1;36447;36440:12;36464:102;36505:6;36556:2;36552:7;36547:2;36540:5;36536:14;36532:28;36522:38;;36464:102;;;:::o;36572:106::-;36616:8;36665:5;36660:3;36656:15;36635:36;;36572:106;;;:::o;36684:227::-;36824:34;36820:1;36812:6;36808:14;36801:58;36893:10;36888:2;36880:6;36876:15;36869:35;36684:227;:::o;36917:225::-;37057:34;37053:1;37045:6;37041:14;37034:58;37126:8;37121:2;37113:6;37109:15;37102:33;36917:225;:::o;37148:229::-;37288:34;37284:1;37276:6;37272:14;37265:58;37357:12;37352:2;37344:6;37340:15;37333:37;37148:229;:::o;37383:233::-;37523:34;37519:1;37511:6;37507:14;37500:58;37592:16;37587:2;37579:6;37575:15;37568:41;37383:233;:::o;37622:224::-;37762:34;37758:1;37750:6;37746:14;37739:58;37831:7;37826:2;37818:6;37814:15;37807:32;37622:224;:::o;37852:229::-;37992:34;37988:1;37980:6;37976:14;37969:58;38061:12;38056:2;38048:6;38044:15;38037:37;37852:229;:::o;38087:182::-;38227:34;38223:1;38215:6;38211:14;38204:58;38087:182;:::o;38275:227::-;38415:34;38411:1;38403:6;38399:14;38392:58;38484:10;38479:2;38471:6;38467:15;38460:35;38275:227;:::o;38508:228::-;38648:34;38644:1;38636:6;38632:14;38625:58;38717:11;38712:2;38704:6;38700:15;38693:36;38508:228;:::o;38742:::-;38882:34;38878:1;38870:6;38866:14;38859:58;38951:11;38946:2;38938:6;38934:15;38927:36;38742:228;:::o;38976:227::-;39116:34;39112:1;39104:6;39100:14;39093:58;39185:10;39180:2;39172:6;39168:15;39161:35;38976:227;:::o;39209:220::-;39349:34;39345:1;39337:6;39333:14;39326:58;39418:3;39413:2;39405:6;39401:15;39394:28;39209:220;:::o;39435:239::-;39575:34;39571:1;39563:6;39559:14;39552:58;39644:22;39639:2;39631:6;39627:15;39620:47;39435:239;:::o;39680:711::-;39719:3;39757:4;39739:16;39736:26;39733:39;;;39765:5;;39733:39;39794:20;;:::i;:::-;39869:1;39851:16;39847:24;39844:1;39838:4;39823:49;39902:4;39896:11;40001:16;39994:4;39986:6;39982:17;39979:39;39946:18;39938:6;39935:30;39919:113;39916:146;;;40047:5;;;;39916:146;40093:6;40087:4;40083:17;40129:3;40123:10;40156:18;40148:6;40145:30;40142:43;;;40178:5;;;;;;40142:43;40226:6;40219:4;40214:3;40210:14;40206:27;40285:1;40267:16;40263:24;40257:4;40253:35;40248:3;40245:44;40242:57;;;40292:5;;;;;;;40242:57;40309;40357:6;40351:4;40347:17;40339:6;40335:30;40329:4;40309:57;:::i;:::-;40382:3;40375:10;;39723:668;;;;;39680:711;;:::o;40397:122::-;40470:24;40488:5;40470:24;:::i;:::-;40463:5;40460:35;40450:63;;40509:1;40506;40499:12;40450:63;40397:122;:::o;40525:116::-;40595:21;40610:5;40595:21;:::i;:::-;40588:5;40585:32;40575:60;;40631:1;40628;40621:12;40575:60;40525:116;:::o;40647:120::-;40719:23;40736:5;40719:23;:::i;:::-;40712:5;40709:34;40699:62;;40757:1;40754;40747:12;40699:62;40647:120;:::o;40773:122::-;40846:24;40864:5;40846:24;:::i;:::-;40839:5;40836:35;40826:63;;40885:1;40882;40875:12;40826:63;40773:122;:::o
Swarm Source
ipfs://be611d58c81e9a3a6f5f8a515266abf907c54ab6755a9eee7983353b5698e07e
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.