ERC-1155
Overview
Max Total Supply
495 CRYPT3D
Holders
173
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 Name:
Crypt3DPunks
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-03-07 */ // File: @openzeppelin/contracts/utils/Context.sol // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // File: @openzeppelin/contracts/access/Ownable.sol // OpenZeppelin Contracts v4.4.1 (access/Ownable.sol) pragma solidity ^0.8.0; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File: @openzeppelin/contracts/utils/Address.sol // OpenZeppelin Contracts v4.4.1 (utils/Address.sol) pragma solidity ^0.8.0; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; assembly { size := extcodesize(account) } return size > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain `call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the * revert reason using the provided one. * * _Available since v4.3._ */ function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } // File: @openzeppelin/contracts/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 v4.4.1 (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. 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. 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 v4.4.1 (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 be 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 v4.4.1 (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: balance query for the zero address"); 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 owner nor 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: transfer caller is not owner nor 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(); _beforeTokenTransfer(operator, from, to, _asSingletonArray(id), _asSingletonArray(amount), 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); _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); _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(); _beforeTokenTransfer(operator, address(0), to, _asSingletonArray(id), _asSingletonArray(amount), data); _balances[id][to] += amount; emit TransferSingle(operator, address(0), to, id, amount); _doSafeTransferAcceptanceCheck(operator, address(0), to, id, amount, data); } /** * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_mint}. * * 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); _doSafeBatchTransferAcceptanceCheck(operator, address(0), to, ids, amounts, data); } /** * @dev Destroys `amount` tokens of token type `id` from `from` * * 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(); _beforeTokenTransfer(operator, from, address(0), _asSingletonArray(id), _asSingletonArray(amount), ""); 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); } /** * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_burn}. * * 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); } /** * @dev Approve `operator` to operate on all of `owner` tokens * * Emits a {ApprovalForAll} event. */ function _setApprovalForAll( address owner, address operator, bool approved ) internal virtual { require(owner != operator, "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 `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 _beforeTokenTransfer( 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: contracts/Crypt3DPunks.sol pragma solidity ^0.8.0; contract Crypt3DPunks is ERC1155, Ownable { string public constant name = "Crypt3D Punks"; string public constant symbol = "CRYPT3D"; uint32 public constant maxSupply = 10000; uint256 public constant preSaleUnitPrice = 0.05 ether; uint32 public constant preSaleMaxPerWallet = 2; uint32 public preSaleStart = 1646611200; uint32 public preSaleEnd = 1646740800; uint256 public constant publicSaleUnitPrice = 0.07 ether; uint32 public constant publicSaleMaxPerWallet = 10; uint32 public publicSaleStart = 1646913600; uint32 public totalSupply = 0; mapping(address => uint32) minted; address private signerAddress = 0x5A8A76Ea7278803143294f1F9Ce418dd7Ed4c564; constructor(string memory uri) ERC1155(uri) {} function setURI(string memory uri) external onlyOwner { _setURI(uri); } function setPreSaleStart(uint32 start) external onlyOwner { preSaleStart = start; } function setPreSaleEnd(uint32 end) external onlyOwner { preSaleEnd = end; } function setPublicSaleStart(uint32 start) external onlyOwner { publicSaleStart = start; } function preSaleIsActive() public view returns (bool) { return block.timestamp >= preSaleStart && block.timestamp <= preSaleEnd; } function publicSaleIsActive() public view returns (bool) { return block.timestamp >= publicSaleStart; } function setSignerAddress(address signer) external onlyOwner { signerAddress = signer; } function isValidAccessMessage( uint8 v, bytes32 r, bytes32 s ) internal view returns (bool) { bytes32 hash = keccak256(abi.encodePacked(msg.sender)); return signerAddress == ecrecover( keccak256( abi.encodePacked("\x19Ethereum Signed Message:\n32", hash) ), v, r, s ); } function mint(address to, uint32 count) internal { require(count > 0, "Count must be greater than 0."); require( totalSupply + count <= maxSupply, "Count exceeds the maximum allowed supply." ); totalSupply += count; if (count > 1) { uint256[] memory ids = new uint256[](uint256(count)); uint256[] memory amounts = new uint256[](uint256(count)); for (uint32 i = 0; i < count; i++) { ids[i] = totalSupply - count + i; amounts[i] = 1; } _mintBatch(to, ids, amounts, ""); } else { _mint(to, totalSupply - 1, 1, ""); } } function preSaleMint( uint32 count, uint8 v, bytes32 r, bytes32 s ) external payable { require(preSaleIsActive(), "Pre-sale is not active."); require(msg.value >= preSaleUnitPrice * count, "Not enough ether."); require( minted[msg.sender] + count <= preSaleMaxPerWallet, "Count exceeds the maximum allowed per wallet." ); require(isValidAccessMessage(v, r, s), "Invalid access message."); minted[msg.sender] += count; mint(msg.sender, count); } function publicSaleMint(uint32 count) external payable { require(publicSaleIsActive(), "Public sale is not active."); require(msg.value >= publicSaleUnitPrice * count, "Not enough ether."); require( minted[msg.sender] + count <= publicSaleMaxPerWallet, "Count exceeds the maximum allowed per wallet." ); minted[msg.sender] += count; mint(msg.sender, count); } function batchMint(address[] memory addresses) external onlyOwner { for (uint256 i = 0; i < addresses.length; i++) { mint(addresses[i], 1); } } function withdraw() external onlyOwner { address[2] memory addresses = [ 0xAffc1EB9AA0fC1659A99eE719789105D3487F221, 0x00889fc62F0b701e6393A99495F9d0b24C8858E8 ]; uint32[2] memory shares = [uint32(9500), uint32(500)]; uint256 balance = address(this).balance; for (uint32 i = 0; i < addresses.length; i++) { uint256 amount = i == addresses.length - 1 ? address(this).balance : (balance * shares[i]) / 10000; payable(addresses[i]).transfer(amount); } } }
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":"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":"address[]","name":"addresses","type":"address[]"}],"name":"batchMint","outputs":[],"stateMutability":"nonpayable","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":"maxSupply","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"preSaleEnd","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"preSaleIsActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"preSaleMaxPerWallet","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"count","type":"uint32"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"preSaleMint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"preSaleStart","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"preSaleUnitPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"publicSaleIsActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"publicSaleMaxPerWallet","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"count","type":"uint32"}],"name":"publicSaleMint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"publicSaleStart","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"publicSaleUnitPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"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":"uint32","name":"end","type":"uint32"}],"name":"setPreSaleEnd","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"start","type":"uint32"}],"name":"setPreSaleStart","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"start","type":"uint32"}],"name":"setPublicSaleStart","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"signer","type":"address"}],"name":"setSignerAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"uri","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":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"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"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040526362254b00600360146101000a81548163ffffffff021916908363ffffffff1602179055506362274540600360186101000a81548163ffffffff021916908363ffffffff160217905550636229e8406003601c6101000a81548163ffffffff021916908363ffffffff1602179055506000600460006101000a81548163ffffffff021916908363ffffffff160217905550735a8a76ea7278803143294f1f9ce418dd7ed4c564600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550348015620000f757600080fd5b50604051620051603803806200516083398181016040528101906200011d91906200036f565b806200012f816200015760201b60201c565b5062000150620001446200017360201b60201c565b6200017b60201b60201c565b5062000544565b80600290805190602001906200016f92919062000241565b5050565b600033905090565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8280546200024f9062000455565b90600052602060002090601f016020900481019282620002735760008555620002bf565b82601f106200028e57805160ff1916838001178555620002bf565b82800160010185558215620002bf579182015b82811115620002be578251825591602001919060010190620002a1565b5b509050620002ce9190620002d2565b5090565b5b80821115620002ed576000816000905550600101620002d3565b5090565b6000620003086200030284620003e9565b620003c0565b90508281526020810184848401111562000327576200032662000524565b5b620003348482856200041f565b509392505050565b600082601f8301126200035457620003536200051f565b5b815162000366848260208601620002f1565b91505092915050565b6000602082840312156200038857620003876200052e565b5b600082015167ffffffffffffffff811115620003a957620003a862000529565b5b620003b7848285016200033c565b91505092915050565b6000620003cc620003df565b9050620003da82826200048b565b919050565b6000604051905090565b600067ffffffffffffffff821115620004075762000406620004f0565b5b620004128262000533565b9050602081019050919050565b60005b838110156200043f57808201518184015260208101905062000422565b838111156200044f576000848401525b50505050565b600060028204905060018216806200046e57607f821691505b60208210811415620004855762000484620004c1565b5b50919050565b620004968262000533565b810181811067ffffffffffffffff82111715620004b857620004b7620004f0565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b614c0c80620005546000396000f3fe6080604052600436106101ed5760003560e01c80634e1273f41161010d578063a22cb465116100a0578063d5abeb011161006f578063d5abeb011461069a578063d67b06c1146106c5578063e985e9c5146106ee578063f242432a1461072b578063f2fde38b14610754576101ed565b8063a22cb465146105ff578063adf10c5014610628578063b172e13314610644578063c7667a4b1461066f576101ed565b8063892f5f6f116100dc578063892f5f6f146105645780638da5cb5b146105805780639039903c146105ab57806395d89b41146105d4576101ed565b80634e1273f4146104ba5780636bc64e0f146104f7578063715018a614610522578063745e1b3f14610539576101ed565b806318160ddd116101855780633360caa0116101545780633360caa0146104245780633ccfd60b1461044f57806340fa89d914610466578063472d3b1b1461048f576101ed565b806318160ddd1461037c5780631f0234d8146103a757806326a8433d146103d25780632eb2c2d6146103fb576101ed565b806306fdde03116101c157806306fdde03146102be5780630d5624b3146102e95780630e89341c146103145780630fcf2e7514610351576101ed565b8062fdd58e146101f257806301ffc9a71461022f57806302fe53051461026c578063046dc16614610295575b600080fd5b3480156101fe57600080fd5b5061021960048036038101906102149190613380565b61077d565b6040516102269190613ebc565b60405180910390f35b34801561023b57600080fd5b5061025660048036038101906102519190613481565b610846565b6040516102639190613bba565b60405180910390f35b34801561027857600080fd5b50610293600480360381019061028e91906134db565b610928565b005b3480156102a157600080fd5b506102bc60048036038101906102b7919061316d565b6109b0565b005b3480156102ca57600080fd5b506102d3610a70565b6040516102e09190613c1a565b60405180910390f35b3480156102f557600080fd5b506102fe610aa9565b60405161030b9190613f00565b60405180910390f35b34801561032057600080fd5b5061033b60048036038101906103369190613524565b610abf565b6040516103489190613c1a565b60405180910390f35b34801561035d57600080fd5b50610366610b53565b6040516103739190613bba565b60405180910390f35b34801561038857600080fd5b50610391610b76565b60405161039e9190613f00565b60405180910390f35b3480156103b357600080fd5b506103bc610b8c565b6040516103c99190613bba565b60405180910390f35b3480156103de57600080fd5b506103f960048036038101906103f49190613551565b610bd3565b005b34801561040757600080fd5b50610422600480360381019061041d91906131da565b610c73565b005b34801561043057600080fd5b50610439610d14565b6040516104469190613f00565b60405180910390f35b34801561045b57600080fd5b50610464610d2a565b005b34801561047257600080fd5b5061048d60048036038101906104889190613551565b610f69565b005b34801561049b57600080fd5b506104a4611009565b6040516104b19190613f00565b60405180910390f35b3480156104c657600080fd5b506104e160048036038101906104dc9190613409565b61100e565b6040516104ee9190613b61565b60405180910390f35b34801561050357600080fd5b5061050c611127565b6040516105199190613f00565b60405180910390f35b34801561052e57600080fd5b5061053761113d565b005b34801561054557600080fd5b5061054e6111c5565b60405161055b9190613f00565b60405180910390f35b61057e60048036038101906105799190613551565b6111ca565b005b34801561058c57600080fd5b5061059561139f565b6040516105a29190613a84565b60405180910390f35b3480156105b757600080fd5b506105d260048036038101906105cd9190613551565b6113c9565b005b3480156105e057600080fd5b506105e9611469565b6040516105f69190613c1a565b60405180910390f35b34801561060b57600080fd5b5061062660048036038101906106219190613340565b6114a2565b005b610642600480360381019061063d919061357e565b6114b8565b005b34801561065057600080fd5b506106596116da565b6040516106669190613ebc565b60405180910390f35b34801561067b57600080fd5b506106846116e5565b6040516106919190613ebc565b60405180910390f35b3480156106a657600080fd5b506106af6116f0565b6040516106bc9190613f00565b60405180910390f35b3480156106d157600080fd5b506106ec60048036038101906106e791906133c0565b6116f6565b005b3480156106fa57600080fd5b506107156004803603810190610710919061319a565b6117ba565b6040516107229190613bba565b60405180910390f35b34801561073757600080fd5b50610752600480360381019061074d91906132a9565b61184e565b005b34801561076057600080fd5b5061077b6004803603810190610776919061316d565b6118ef565b005b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156107ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e590613c7c565b60405180910390fd5b60008083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60007fd9b67a26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061091157507f0e89341c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806109215750610920826119e7565b5b9050919050565b610930611a51565b73ffffffffffffffffffffffffffffffffffffffff1661094e61139f565b73ffffffffffffffffffffffffffffffffffffffff16146109a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099b90613e1c565b60405180910390fd5b6109ad81611a59565b50565b6109b8611a51565b73ffffffffffffffffffffffffffffffffffffffff166109d661139f565b73ffffffffffffffffffffffffffffffffffffffff1614610a2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2390613e1c565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6040518060400160405280600d81526020017f437279707433442050756e6b730000000000000000000000000000000000000081525081565b600360149054906101000a900463ffffffff1681565b606060028054610ace906142d6565b80601f0160208091040260200160405190810160405280929190818152602001828054610afa906142d6565b8015610b475780601f10610b1c57610100808354040283529160200191610b47565b820191906000526020600020905b815481529060010190602001808311610b2a57829003601f168201915b50505050509050919050565b60006003601c9054906101000a900463ffffffff1663ffffffff16421015905090565b600460009054906101000a900463ffffffff1681565b6000600360149054906101000a900463ffffffff1663ffffffff164210158015610bce5750600360189054906101000a900463ffffffff1663ffffffff164211155b905090565b610bdb611a51565b73ffffffffffffffffffffffffffffffffffffffff16610bf961139f565b73ffffffffffffffffffffffffffffffffffffffff1614610c4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4690613e1c565b60405180910390fd5b80600360186101000a81548163ffffffff021916908363ffffffff16021790555050565b610c7b611a51565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480610cc15750610cc085610cbb611a51565b6117ba565b5b610d00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf790613d7c565b60405180910390fd5b610d0d8585858585611a73565b5050505050565b6003601c9054906101000a900463ffffffff1681565b610d32611a51565b73ffffffffffffffffffffffffffffffffffffffff16610d5061139f565b73ffffffffffffffffffffffffffffffffffffffff1614610da6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9d90613e1c565b60405180910390fd5b6000604051806040016040528073affc1eb9aa0fc1659a99ee719789105d3487f22173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200172889fc62f0b701e6393a99495f9d0b24c8858e873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525090506000604051806040016040528061251c63ffffffff1663ffffffff1681526020016101f463ffffffff1663ffffffff168152509050600047905060005b60028163ffffffff161015610f6357600060016002610e9a9190614191565b8263ffffffff1614610ee757612710848363ffffffff1660028110610ec257610ec161446a565b5b602002015163ffffffff1684610ed89190614137565b610ee29190614106565b610ee9565b475b9050848263ffffffff1660028110610f0457610f0361446a565b5b602002015173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610f4e573d6000803e3d6000fd5b50508080610f5b90614382565b915050610e7b565b50505050565b610f71611a51565b73ffffffffffffffffffffffffffffffffffffffff16610f8f61139f565b73ffffffffffffffffffffffffffffffffffffffff1614610fe5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fdc90613e1c565b60405180910390fd5b80600360146101000a81548163ffffffff021916908363ffffffff16021790555050565b600a81565b60608151835114611054576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104b90613e5c565b60405180910390fd5b6000835167ffffffffffffffff81111561107157611070614499565b5b60405190808252806020026020018201604052801561109f5781602001602082028036833780820191505090505b50905060005b845181101561111c576110ec8582815181106110c4576110c361446a565b5b60200260200101518583815181106110df576110de61446a565b5b602002602001015161077d565b8282815181106110ff576110fe61446a565b5b6020026020010181815250508061111590614339565b90506110a5565b508091505092915050565b600360189054906101000a900463ffffffff1681565b611145611a51565b73ffffffffffffffffffffffffffffffffffffffff1661116361139f565b73ffffffffffffffffffffffffffffffffffffffff16146111b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b090613e1c565b60405180910390fd5b6111c36000611d87565b565b600281565b6111d2610b53565b611211576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120890613cfc565b60405180910390fd5b8063ffffffff1666f8b0a10e47000061122a9190614137565b34101561126c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126390613d3c565b60405180910390fd5b600a63ffffffff1681600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff166112cf91906140cc565b63ffffffff161115611316576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130d90613ddc565b60405180910390fd5b80600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282829054906101000a900463ffffffff1661137491906140cc565b92506101000a81548163ffffffff021916908363ffffffff16021790555061139c3382611e4d565b50565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6113d1611a51565b73ffffffffffffffffffffffffffffffffffffffff166113ef61139f565b73ffffffffffffffffffffffffffffffffffffffff1614611445576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143c90613e1c565b60405180910390fd5b806003601c6101000a81548163ffffffff021916908363ffffffff16021790555050565b6040518060400160405280600781526020017f435259505433440000000000000000000000000000000000000000000000000081525081565b6114b46114ad611a51565b8383612105565b5050565b6114c0610b8c565b6114ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f690613d9c565b60405180910390fd5b8363ffffffff1666b1a2bc2ec500006115189190614137565b34101561155a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155190613d3c565b60405180910390fd5b600263ffffffff1684600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff166115bd91906140cc565b63ffffffff161115611604576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115fb90613ddc565b60405180910390fd5b61160f838383612272565b61164e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164590613c9c565b60405180910390fd5b83600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282829054906101000a900463ffffffff166116ac91906140cc565b92506101000a81548163ffffffff021916908363ffffffff1602179055506116d43385611e4d565b50505050565b66f8b0a10e47000081565b66b1a2bc2ec5000081565b61271081565b6116fe611a51565b73ffffffffffffffffffffffffffffffffffffffff1661171c61139f565b73ffffffffffffffffffffffffffffffffffffffff1614611772576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176990613e1c565b60405180910390fd5b60005b81518110156117b6576117a38282815181106117945761179361446a565b5b60200260200101516001611e4d565b80806117ae90614339565b915050611775565b5050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611856611a51565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16148061189c575061189b85611896611a51565b6117ba565b5b6118db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d290613cdc565b60405180910390fd5b6118e8858585858561236d565b5050505050565b6118f7611a51565b73ffffffffffffffffffffffffffffffffffffffff1661191561139f565b73ffffffffffffffffffffffffffffffffffffffff161461196b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196290613e1c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156119db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d290613cbc565b60405180910390fd5b6119e481611d87565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600033905090565b8060029080519060200190611a6f929190612e06565b5050565b8151835114611ab7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aae90613e7c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611b27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1e90613d5c565b60405180910390fd5b6000611b31611a51565b9050611b418187878787876125ef565b60005b8451811015611cf2576000858281518110611b6257611b6161446a565b5b602002602001015190506000858381518110611b8157611b8061446a565b5b60200260200101519050600080600084815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611c22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1990613dbc565b60405180910390fd5b81810360008085815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160008085815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611cd79190614076565b9250508190555050505080611ceb90614339565b9050611b44565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051611d69929190613b83565b60405180910390a4611d7f8187878787876125f7565b505050505050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008163ffffffff1611611e96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8d90613d1c565b60405180910390fd5b61271063ffffffff1681600460009054906101000a900463ffffffff16611ebd91906140cc565b63ffffffff161115611f04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611efb90613dfc565b60405180910390fd5b80600460008282829054906101000a900463ffffffff16611f2591906140cc565b92506101000a81548163ffffffff021916908363ffffffff16021790555060018163ffffffff1611156120c05760008163ffffffff1667ffffffffffffffff811115611f7457611f73614499565b5b604051908082528060200260200182016040528015611fa25781602001602082028036833780820191505090505b50905060008263ffffffff1667ffffffffffffffff811115611fc757611fc6614499565b5b604051908082528060200260200182016040528015611ff55781602001602082028036833780820191505090505b50905060005b8363ffffffff168163ffffffff16101561209d578084600460009054906101000a900463ffffffff1661202e91906141c5565b61203891906140cc565b63ffffffff16838263ffffffff16815181106120575761205661446a565b5b6020026020010181815250506001828263ffffffff168151811061207e5761207d61446a565b5b602002602001018181525050808061209590614382565b915050611ffb565b506120b9848383604051806020016040528060008152506127de565b5050612101565b612100826001600460009054906101000a900463ffffffff166120e391906141c5565b63ffffffff166001604051806020016040528060008152506129fc565b5b5050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612174576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216b90613e3c565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516122659190613bba565b60405180910390a3505050565b600080336040516020016122869190613a43565b6040516020818303038152906040528051906020012090506001816040516020016122b19190613a5e565b60405160208183030381529060405280519060200120868686604051600081526020016040526040516122e79493929190613bd5565b6020604051602081039080840390855afa158015612309573d6000803e3d6000fd5b5050506020604051035173ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16149150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156123dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123d490613d5c565b60405180910390fd5b60006123e7611a51565b90506124078187876123f888612b92565b61240188612b92565b876125ef565b600080600086815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508381101561249e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249590613dbc565b60405180910390fd5b83810360008087815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508360008087815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546125539190614076565b925050819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6288886040516125d0929190613ed7565b60405180910390a46125e6828888888888612c0c565b50505050505050565b505050505050565b6126168473ffffffffffffffffffffffffffffffffffffffff16612df3565b156127d6578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b815260040161265c959493929190613a9f565b602060405180830381600087803b15801561267657600080fd5b505af19250505080156126a757506040513d601f19601f820116820180604052508101906126a491906134ae565b60015b61274d576126b36144c8565b806308c379a0141561271057506126c8614a9f565b806126d35750612712565b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127079190613c1a565b60405180910390fd5b505b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161274490613c3c565b60405180910390fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146127d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127cb90613c5c565b60405180910390fd5b505b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561284e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161284590613e9c565b60405180910390fd5b8151835114612892576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161288990613e7c565b60405180910390fd5b600061289c611a51565b90506128ad816000878787876125ef565b60005b8451811015612966578381815181106128cc576128cb61446a565b5b60200260200101516000808784815181106128ea576128e961446a565b5b6020026020010151815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461294c9190614076565b92505081905550808061295e90614339565b9150506128b0565b508473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516129de929190613b83565b60405180910390a46129f5816000878787876125f7565b5050505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612a6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a6390613e9c565b60405180910390fd5b6000612a76611a51565b9050612a9781600087612a8888612b92565b612a9188612b92565b876125ef565b8260008086815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612af69190614076565b925050819055508473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628787604051612b74929190613ed7565b60405180910390a4612b8b81600087878787612c0c565b5050505050565b60606000600167ffffffffffffffff811115612bb157612bb0614499565b5b604051908082528060200260200182016040528015612bdf5781602001602082028036833780820191505090505b5090508281600081518110612bf757612bf661446a565b5b60200260200101818152505080915050919050565b612c2b8473ffffffffffffffffffffffffffffffffffffffff16612df3565b15612deb578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b8152600401612c71959493929190613b07565b602060405180830381600087803b158015612c8b57600080fd5b505af1925050508015612cbc57506040513d601f19601f82011682018060405250810190612cb991906134ae565b60015b612d6257612cc86144c8565b806308c379a01415612d255750612cdd614a9f565b80612ce85750612d27565b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d1c9190613c1a565b60405180910390fd5b505b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d5990613c3c565b60405180910390fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614612de9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612de090613c5c565b60405180910390fd5b505b505050505050565b600080823b905060008111915050919050565b828054612e12906142d6565b90600052602060002090601f016020900481019282612e345760008555612e7b565b82601f10612e4d57805160ff1916838001178555612e7b565b82800160010185558215612e7b579182015b82811115612e7a578251825591602001919060010190612e5f565b5b509050612e889190612e8c565b5090565b5b80821115612ea5576000816000905550600101612e8d565b5090565b6000612ebc612eb784613f40565b613f1b565b90508083825260208201905082856020860282011115612edf57612ede6144ef565b5b60005b85811015612f0f5781612ef5888261300d565b845260208401935060208301925050600181019050612ee2565b5050509392505050565b6000612f2c612f2784613f6c565b613f1b565b90508083825260208201905082856020860282011115612f4f57612f4e6144ef565b5b60005b85811015612f7f5781612f65888261312e565b845260208401935060208301925050600181019050612f52565b5050509392505050565b6000612f9c612f9784613f98565b613f1b565b905082815260208101848484011115612fb857612fb76144f4565b5b612fc3848285614294565b509392505050565b6000612fde612fd984613fc9565b613f1b565b905082815260208101848484011115612ffa57612ff96144f4565b5b613005848285614294565b509392505050565b60008135905061301c81614b35565b92915050565b600082601f830112613037576130366144ea565b5b8135613047848260208601612ea9565b91505092915050565b600082601f830112613065576130646144ea565b5b8135613075848260208601612f19565b91505092915050565b60008135905061308d81614b4c565b92915050565b6000813590506130a281614b63565b92915050565b6000813590506130b781614b7a565b92915050565b6000815190506130cc81614b7a565b92915050565b600082601f8301126130e7576130e66144ea565b5b81356130f7848260208601612f89565b91505092915050565b600082601f830112613115576131146144ea565b5b8135613125848260208601612fcb565b91505092915050565b60008135905061313d81614b91565b92915050565b60008135905061315281614ba8565b92915050565b60008135905061316781614bbf565b92915050565b600060208284031215613183576131826144fe565b5b60006131918482850161300d565b91505092915050565b600080604083850312156131b1576131b06144fe565b5b60006131bf8582860161300d565b92505060206131d08582860161300d565b9150509250929050565b600080600080600060a086880312156131f6576131f56144fe565b5b60006132048882890161300d565b95505060206132158882890161300d565b945050604086013567ffffffffffffffff811115613236576132356144f9565b5b61324288828901613050565b935050606086013567ffffffffffffffff811115613263576132626144f9565b5b61326f88828901613050565b925050608086013567ffffffffffffffff8111156132905761328f6144f9565b5b61329c888289016130d2565b9150509295509295909350565b600080600080600060a086880312156132c5576132c46144fe565b5b60006132d38882890161300d565b95505060206132e48882890161300d565b94505060406132f58882890161312e565b93505060606133068882890161312e565b925050608086013567ffffffffffffffff811115613327576133266144f9565b5b613333888289016130d2565b9150509295509295909350565b60008060408385031215613357576133566144fe565b5b60006133658582860161300d565b92505060206133768582860161307e565b9150509250929050565b60008060408385031215613397576133966144fe565b5b60006133a58582860161300d565b92505060206133b68582860161312e565b9150509250929050565b6000602082840312156133d6576133d56144fe565b5b600082013567ffffffffffffffff8111156133f4576133f36144f9565b5b61340084828501613022565b91505092915050565b600080604083850312156134205761341f6144fe565b5b600083013567ffffffffffffffff81111561343e5761343d6144f9565b5b61344a85828601613022565b925050602083013567ffffffffffffffff81111561346b5761346a6144f9565b5b61347785828601613050565b9150509250929050565b600060208284031215613497576134966144fe565b5b60006134a5848285016130a8565b91505092915050565b6000602082840312156134c4576134c36144fe565b5b60006134d2848285016130bd565b91505092915050565b6000602082840312156134f1576134f06144fe565b5b600082013567ffffffffffffffff81111561350f5761350e6144f9565b5b61351b84828501613100565b91505092915050565b60006020828403121561353a576135396144fe565b5b60006135488482850161312e565b91505092915050565b600060208284031215613567576135666144fe565b5b600061357584828501613143565b91505092915050565b60008060008060808587031215613598576135976144fe565b5b60006135a687828801613143565b94505060206135b787828801613158565b93505060406135c887828801613093565b92505060606135d987828801613093565b91505092959194509250565b60006135f18383613a07565b60208301905092915050565b613606816141f9565b82525050565b61361d613618826141f9565b6143af565b82525050565b600061362e8261400a565b6136388185614038565b935061364383613ffa565b8060005b8381101561367457815161365b88826135e5565b97506136668361402b565b925050600181019050613647565b5085935050505092915050565b61368a8161420b565b82525050565b61369981614217565b82525050565b6136b06136ab82614217565b6143c1565b82525050565b60006136c182614015565b6136cb8185614049565b93506136db8185602086016142a3565b6136e481614503565b840191505092915050565b60006136fa82614020565b613704818561405a565b93506137148185602086016142a3565b61371d81614503565b840191505092915050565b600061373560348361405a565b91506137408261452e565b604082019050919050565b600061375860288361405a565b91506137638261457d565b604082019050919050565b600061377b601c8361406b565b9150613786826145cc565b601c82019050919050565b600061379e602b8361405a565b91506137a9826145f5565b604082019050919050565b60006137c160178361405a565b91506137cc82614644565b602082019050919050565b60006137e460268361405a565b91506137ef8261466d565b604082019050919050565b600061380760298361405a565b9150613812826146bc565b604082019050919050565b600061382a601a8361405a565b91506138358261470b565b602082019050919050565b600061384d601d8361405a565b915061385882614734565b602082019050919050565b600061387060118361405a565b915061387b8261475d565b602082019050919050565b600061389360258361405a565b915061389e82614786565b604082019050919050565b60006138b660328361405a565b91506138c1826147d5565b604082019050919050565b60006138d960178361405a565b91506138e482614824565b602082019050919050565b60006138fc602a8361405a565b91506139078261484d565b604082019050919050565b600061391f602d8361405a565b915061392a8261489c565b604082019050919050565b600061394260298361405a565b915061394d826148eb565b604082019050919050565b600061396560208361405a565b91506139708261493a565b602082019050919050565b600061398860298361405a565b915061399382614963565b604082019050919050565b60006139ab60298361405a565b91506139b6826149b2565b604082019050919050565b60006139ce60288361405a565b91506139d982614a01565b604082019050919050565b60006139f160218361405a565b91506139fc82614a50565b604082019050919050565b613a108161426d565b82525050565b613a1f8161426d565b82525050565b613a2e81614277565b82525050565b613a3d81614287565b82525050565b6000613a4f828461360c565b60148201915081905092915050565b6000613a698261376e565b9150613a75828461369f565b60208201915081905092915050565b6000602082019050613a9960008301846135fd565b92915050565b600060a082019050613ab460008301886135fd565b613ac160208301876135fd565b8181036040830152613ad38186613623565b90508181036060830152613ae78185613623565b90508181036080830152613afb81846136b6565b90509695505050505050565b600060a082019050613b1c60008301886135fd565b613b2960208301876135fd565b613b366040830186613a16565b613b436060830185613a16565b8181036080830152613b5581846136b6565b90509695505050505050565b60006020820190508181036000830152613b7b8184613623565b905092915050565b60006040820190508181036000830152613b9d8185613623565b90508181036020830152613bb18184613623565b90509392505050565b6000602082019050613bcf6000830184613681565b92915050565b6000608082019050613bea6000830187613690565b613bf76020830186613a34565b613c046040830185613690565b613c116060830184613690565b95945050505050565b60006020820190508181036000830152613c3481846136ef565b905092915050565b60006020820190508181036000830152613c5581613728565b9050919050565b60006020820190508181036000830152613c758161374b565b9050919050565b60006020820190508181036000830152613c9581613791565b9050919050565b60006020820190508181036000830152613cb5816137b4565b9050919050565b60006020820190508181036000830152613cd5816137d7565b9050919050565b60006020820190508181036000830152613cf5816137fa565b9050919050565b60006020820190508181036000830152613d158161381d565b9050919050565b60006020820190508181036000830152613d3581613840565b9050919050565b60006020820190508181036000830152613d5581613863565b9050919050565b60006020820190508181036000830152613d7581613886565b9050919050565b60006020820190508181036000830152613d95816138a9565b9050919050565b60006020820190508181036000830152613db5816138cc565b9050919050565b60006020820190508181036000830152613dd5816138ef565b9050919050565b60006020820190508181036000830152613df581613912565b9050919050565b60006020820190508181036000830152613e1581613935565b9050919050565b60006020820190508181036000830152613e3581613958565b9050919050565b60006020820190508181036000830152613e558161397b565b9050919050565b60006020820190508181036000830152613e758161399e565b9050919050565b60006020820190508181036000830152613e95816139c1565b9050919050565b60006020820190508181036000830152613eb5816139e4565b9050919050565b6000602082019050613ed16000830184613a16565b92915050565b6000604082019050613eec6000830185613a16565b613ef96020830184613a16565b9392505050565b6000602082019050613f156000830184613a25565b92915050565b6000613f25613f36565b9050613f318282614308565b919050565b6000604051905090565b600067ffffffffffffffff821115613f5b57613f5a614499565b5b602082029050602081019050919050565b600067ffffffffffffffff821115613f8757613f86614499565b5b602082029050602081019050919050565b600067ffffffffffffffff821115613fb357613fb2614499565b5b613fbc82614503565b9050602081019050919050565b600067ffffffffffffffff821115613fe457613fe3614499565b5b613fed82614503565b9050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b60006140818261426d565b915061408c8361426d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156140c1576140c06143dd565b5b828201905092915050565b60006140d782614277565b91506140e283614277565b92508263ffffffff038211156140fb576140fa6143dd565b5b828201905092915050565b60006141118261426d565b915061411c8361426d565b92508261412c5761412b61440c565b5b828204905092915050565b60006141428261426d565b915061414d8361426d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614186576141856143dd565b5b828202905092915050565b600061419c8261426d565b91506141a78361426d565b9250828210156141ba576141b96143dd565b5b828203905092915050565b60006141d082614277565b91506141db83614277565b9250828210156141ee576141ed6143dd565b5b828203905092915050565b60006142048261424d565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b600060ff82169050919050565b82818337600083830152505050565b60005b838110156142c15780820151818401526020810190506142a6565b838111156142d0576000848401525b50505050565b600060028204905060018216806142ee57607f821691505b602082108114156143025761430161443b565b5b50919050565b61431182614503565b810181811067ffffffffffffffff821117156143305761432f614499565b5b80604052505050565b60006143448261426d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614377576143766143dd565b5b600182019050919050565b600061438d82614277565b915063ffffffff8214156143a4576143a36143dd565b5b600182019050919050565b60006143ba826143cb565b9050919050565b6000819050919050565b60006143d682614514565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600060033d11156144e75760046000803e6144e4600051614521565b90505b90565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b60008160e01c9050919050565b7f455243313135353a207472616e7366657220746f206e6f6e204552433131353560008201527f526563656976657220696d706c656d656e746572000000000000000000000000602082015250565b7f455243313135353a204552433131353552656365697665722072656a6563746560008201527f6420746f6b656e73000000000000000000000000000000000000000000000000602082015250565b7f19457468657265756d205369676e6564204d6573736167653a0a333200000000600082015250565b7f455243313135353a2062616c616e636520717565727920666f7220746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b7f496e76616c696420616363657373206d6573736167652e000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260008201527f20617070726f7665640000000000000000000000000000000000000000000000602082015250565b7f5075626c69632073616c65206973206e6f74206163746976652e000000000000600082015250565b7f436f756e74206d7573742062652067726561746572207468616e20302e000000600082015250565b7f4e6f7420656e6f7567682065746865722e000000000000000000000000000000600082015250565b7f455243313135353a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a207472616e736665722063616c6c6572206973206e6f742060008201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000602082015250565b7f5072652d73616c65206973206e6f74206163746976652e000000000000000000600082015250565b7f455243313135353a20696e73756666696369656e742062616c616e636520666f60008201527f72207472616e7366657200000000000000000000000000000000000000000000602082015250565b7f436f756e74206578636565647320746865206d6178696d756d20616c6c6f776560008201527f64207065722077616c6c65742e00000000000000000000000000000000000000602082015250565b7f436f756e74206578636565647320746865206d6178696d756d20616c6c6f776560008201527f6420737570706c792e0000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f455243313135353a2073657474696e6720617070726f76616c2073746174757360008201527f20666f722073656c660000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206163636f756e747320616e6420696473206c656e67746860008201527f206d69736d617463680000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060008201527f6d69736d61746368000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b600060443d1015614aaf57614b32565b614ab7613f36565b60043d036004823e80513d602482011167ffffffffffffffff82111715614adf575050614b32565b808201805167ffffffffffffffff811115614afd5750505050614b32565b80602083010160043d038501811115614b1a575050505050614b32565b614b2982602001850186614308565b82955050505050505b90565b614b3e816141f9565b8114614b4957600080fd5b50565b614b558161420b565b8114614b6057600080fd5b50565b614b6c81614217565b8114614b7757600080fd5b50565b614b8381614221565b8114614b8e57600080fd5b50565b614b9a8161426d565b8114614ba557600080fd5b50565b614bb181614277565b8114614bbc57600080fd5b50565b614bc881614287565b8114614bd357600080fd5b5056fea26469706673582212203c94850f8681a1d467b91d96107926ecfca3fe879fc54ec2c0330f7e35b0db3064736f6c634300080700330000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000005c68747470733a2f2f637279707433642e6d7970696e6174612e636c6f75642f697066732f516d6337554a4d5767455169546673487254646a3468437835506f3661474d77725354654c714a544841706a776a2f7b69647d2e6a736f6e00000000
Deployed Bytecode
0x6080604052600436106101ed5760003560e01c80634e1273f41161010d578063a22cb465116100a0578063d5abeb011161006f578063d5abeb011461069a578063d67b06c1146106c5578063e985e9c5146106ee578063f242432a1461072b578063f2fde38b14610754576101ed565b8063a22cb465146105ff578063adf10c5014610628578063b172e13314610644578063c7667a4b1461066f576101ed565b8063892f5f6f116100dc578063892f5f6f146105645780638da5cb5b146105805780639039903c146105ab57806395d89b41146105d4576101ed565b80634e1273f4146104ba5780636bc64e0f146104f7578063715018a614610522578063745e1b3f14610539576101ed565b806318160ddd116101855780633360caa0116101545780633360caa0146104245780633ccfd60b1461044f57806340fa89d914610466578063472d3b1b1461048f576101ed565b806318160ddd1461037c5780631f0234d8146103a757806326a8433d146103d25780632eb2c2d6146103fb576101ed565b806306fdde03116101c157806306fdde03146102be5780630d5624b3146102e95780630e89341c146103145780630fcf2e7514610351576101ed565b8062fdd58e146101f257806301ffc9a71461022f57806302fe53051461026c578063046dc16614610295575b600080fd5b3480156101fe57600080fd5b5061021960048036038101906102149190613380565b61077d565b6040516102269190613ebc565b60405180910390f35b34801561023b57600080fd5b5061025660048036038101906102519190613481565b610846565b6040516102639190613bba565b60405180910390f35b34801561027857600080fd5b50610293600480360381019061028e91906134db565b610928565b005b3480156102a157600080fd5b506102bc60048036038101906102b7919061316d565b6109b0565b005b3480156102ca57600080fd5b506102d3610a70565b6040516102e09190613c1a565b60405180910390f35b3480156102f557600080fd5b506102fe610aa9565b60405161030b9190613f00565b60405180910390f35b34801561032057600080fd5b5061033b60048036038101906103369190613524565b610abf565b6040516103489190613c1a565b60405180910390f35b34801561035d57600080fd5b50610366610b53565b6040516103739190613bba565b60405180910390f35b34801561038857600080fd5b50610391610b76565b60405161039e9190613f00565b60405180910390f35b3480156103b357600080fd5b506103bc610b8c565b6040516103c99190613bba565b60405180910390f35b3480156103de57600080fd5b506103f960048036038101906103f49190613551565b610bd3565b005b34801561040757600080fd5b50610422600480360381019061041d91906131da565b610c73565b005b34801561043057600080fd5b50610439610d14565b6040516104469190613f00565b60405180910390f35b34801561045b57600080fd5b50610464610d2a565b005b34801561047257600080fd5b5061048d60048036038101906104889190613551565b610f69565b005b34801561049b57600080fd5b506104a4611009565b6040516104b19190613f00565b60405180910390f35b3480156104c657600080fd5b506104e160048036038101906104dc9190613409565b61100e565b6040516104ee9190613b61565b60405180910390f35b34801561050357600080fd5b5061050c611127565b6040516105199190613f00565b60405180910390f35b34801561052e57600080fd5b5061053761113d565b005b34801561054557600080fd5b5061054e6111c5565b60405161055b9190613f00565b60405180910390f35b61057e60048036038101906105799190613551565b6111ca565b005b34801561058c57600080fd5b5061059561139f565b6040516105a29190613a84565b60405180910390f35b3480156105b757600080fd5b506105d260048036038101906105cd9190613551565b6113c9565b005b3480156105e057600080fd5b506105e9611469565b6040516105f69190613c1a565b60405180910390f35b34801561060b57600080fd5b5061062660048036038101906106219190613340565b6114a2565b005b610642600480360381019061063d919061357e565b6114b8565b005b34801561065057600080fd5b506106596116da565b6040516106669190613ebc565b60405180910390f35b34801561067b57600080fd5b506106846116e5565b6040516106919190613ebc565b60405180910390f35b3480156106a657600080fd5b506106af6116f0565b6040516106bc9190613f00565b60405180910390f35b3480156106d157600080fd5b506106ec60048036038101906106e791906133c0565b6116f6565b005b3480156106fa57600080fd5b506107156004803603810190610710919061319a565b6117ba565b6040516107229190613bba565b60405180910390f35b34801561073757600080fd5b50610752600480360381019061074d91906132a9565b61184e565b005b34801561076057600080fd5b5061077b6004803603810190610776919061316d565b6118ef565b005b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156107ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e590613c7c565b60405180910390fd5b60008083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60007fd9b67a26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061091157507f0e89341c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806109215750610920826119e7565b5b9050919050565b610930611a51565b73ffffffffffffffffffffffffffffffffffffffff1661094e61139f565b73ffffffffffffffffffffffffffffffffffffffff16146109a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099b90613e1c565b60405180910390fd5b6109ad81611a59565b50565b6109b8611a51565b73ffffffffffffffffffffffffffffffffffffffff166109d661139f565b73ffffffffffffffffffffffffffffffffffffffff1614610a2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2390613e1c565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6040518060400160405280600d81526020017f437279707433442050756e6b730000000000000000000000000000000000000081525081565b600360149054906101000a900463ffffffff1681565b606060028054610ace906142d6565b80601f0160208091040260200160405190810160405280929190818152602001828054610afa906142d6565b8015610b475780601f10610b1c57610100808354040283529160200191610b47565b820191906000526020600020905b815481529060010190602001808311610b2a57829003601f168201915b50505050509050919050565b60006003601c9054906101000a900463ffffffff1663ffffffff16421015905090565b600460009054906101000a900463ffffffff1681565b6000600360149054906101000a900463ffffffff1663ffffffff164210158015610bce5750600360189054906101000a900463ffffffff1663ffffffff164211155b905090565b610bdb611a51565b73ffffffffffffffffffffffffffffffffffffffff16610bf961139f565b73ffffffffffffffffffffffffffffffffffffffff1614610c4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4690613e1c565b60405180910390fd5b80600360186101000a81548163ffffffff021916908363ffffffff16021790555050565b610c7b611a51565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480610cc15750610cc085610cbb611a51565b6117ba565b5b610d00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf790613d7c565b60405180910390fd5b610d0d8585858585611a73565b5050505050565b6003601c9054906101000a900463ffffffff1681565b610d32611a51565b73ffffffffffffffffffffffffffffffffffffffff16610d5061139f565b73ffffffffffffffffffffffffffffffffffffffff1614610da6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9d90613e1c565b60405180910390fd5b6000604051806040016040528073affc1eb9aa0fc1659a99ee719789105d3487f22173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200172889fc62f0b701e6393a99495f9d0b24c8858e873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525090506000604051806040016040528061251c63ffffffff1663ffffffff1681526020016101f463ffffffff1663ffffffff168152509050600047905060005b60028163ffffffff161015610f6357600060016002610e9a9190614191565b8263ffffffff1614610ee757612710848363ffffffff1660028110610ec257610ec161446a565b5b602002015163ffffffff1684610ed89190614137565b610ee29190614106565b610ee9565b475b9050848263ffffffff1660028110610f0457610f0361446a565b5b602002015173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610f4e573d6000803e3d6000fd5b50508080610f5b90614382565b915050610e7b565b50505050565b610f71611a51565b73ffffffffffffffffffffffffffffffffffffffff16610f8f61139f565b73ffffffffffffffffffffffffffffffffffffffff1614610fe5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fdc90613e1c565b60405180910390fd5b80600360146101000a81548163ffffffff021916908363ffffffff16021790555050565b600a81565b60608151835114611054576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104b90613e5c565b60405180910390fd5b6000835167ffffffffffffffff81111561107157611070614499565b5b60405190808252806020026020018201604052801561109f5781602001602082028036833780820191505090505b50905060005b845181101561111c576110ec8582815181106110c4576110c361446a565b5b60200260200101518583815181106110df576110de61446a565b5b602002602001015161077d565b8282815181106110ff576110fe61446a565b5b6020026020010181815250508061111590614339565b90506110a5565b508091505092915050565b600360189054906101000a900463ffffffff1681565b611145611a51565b73ffffffffffffffffffffffffffffffffffffffff1661116361139f565b73ffffffffffffffffffffffffffffffffffffffff16146111b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b090613e1c565b60405180910390fd5b6111c36000611d87565b565b600281565b6111d2610b53565b611211576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120890613cfc565b60405180910390fd5b8063ffffffff1666f8b0a10e47000061122a9190614137565b34101561126c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126390613d3c565b60405180910390fd5b600a63ffffffff1681600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff166112cf91906140cc565b63ffffffff161115611316576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130d90613ddc565b60405180910390fd5b80600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282829054906101000a900463ffffffff1661137491906140cc565b92506101000a81548163ffffffff021916908363ffffffff16021790555061139c3382611e4d565b50565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6113d1611a51565b73ffffffffffffffffffffffffffffffffffffffff166113ef61139f565b73ffffffffffffffffffffffffffffffffffffffff1614611445576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143c90613e1c565b60405180910390fd5b806003601c6101000a81548163ffffffff021916908363ffffffff16021790555050565b6040518060400160405280600781526020017f435259505433440000000000000000000000000000000000000000000000000081525081565b6114b46114ad611a51565b8383612105565b5050565b6114c0610b8c565b6114ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f690613d9c565b60405180910390fd5b8363ffffffff1666b1a2bc2ec500006115189190614137565b34101561155a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155190613d3c565b60405180910390fd5b600263ffffffff1684600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff166115bd91906140cc565b63ffffffff161115611604576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115fb90613ddc565b60405180910390fd5b61160f838383612272565b61164e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164590613c9c565b60405180910390fd5b83600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282829054906101000a900463ffffffff166116ac91906140cc565b92506101000a81548163ffffffff021916908363ffffffff1602179055506116d43385611e4d565b50505050565b66f8b0a10e47000081565b66b1a2bc2ec5000081565b61271081565b6116fe611a51565b73ffffffffffffffffffffffffffffffffffffffff1661171c61139f565b73ffffffffffffffffffffffffffffffffffffffff1614611772576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176990613e1c565b60405180910390fd5b60005b81518110156117b6576117a38282815181106117945761179361446a565b5b60200260200101516001611e4d565b80806117ae90614339565b915050611775565b5050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611856611a51565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16148061189c575061189b85611896611a51565b6117ba565b5b6118db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d290613cdc565b60405180910390fd5b6118e8858585858561236d565b5050505050565b6118f7611a51565b73ffffffffffffffffffffffffffffffffffffffff1661191561139f565b73ffffffffffffffffffffffffffffffffffffffff161461196b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196290613e1c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156119db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d290613cbc565b60405180910390fd5b6119e481611d87565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600033905090565b8060029080519060200190611a6f929190612e06565b5050565b8151835114611ab7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aae90613e7c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611b27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1e90613d5c565b60405180910390fd5b6000611b31611a51565b9050611b418187878787876125ef565b60005b8451811015611cf2576000858281518110611b6257611b6161446a565b5b602002602001015190506000858381518110611b8157611b8061446a565b5b60200260200101519050600080600084815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611c22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1990613dbc565b60405180910390fd5b81810360008085815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160008085815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611cd79190614076565b9250508190555050505080611ceb90614339565b9050611b44565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051611d69929190613b83565b60405180910390a4611d7f8187878787876125f7565b505050505050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008163ffffffff1611611e96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8d90613d1c565b60405180910390fd5b61271063ffffffff1681600460009054906101000a900463ffffffff16611ebd91906140cc565b63ffffffff161115611f04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611efb90613dfc565b60405180910390fd5b80600460008282829054906101000a900463ffffffff16611f2591906140cc565b92506101000a81548163ffffffff021916908363ffffffff16021790555060018163ffffffff1611156120c05760008163ffffffff1667ffffffffffffffff811115611f7457611f73614499565b5b604051908082528060200260200182016040528015611fa25781602001602082028036833780820191505090505b50905060008263ffffffff1667ffffffffffffffff811115611fc757611fc6614499565b5b604051908082528060200260200182016040528015611ff55781602001602082028036833780820191505090505b50905060005b8363ffffffff168163ffffffff16101561209d578084600460009054906101000a900463ffffffff1661202e91906141c5565b61203891906140cc565b63ffffffff16838263ffffffff16815181106120575761205661446a565b5b6020026020010181815250506001828263ffffffff168151811061207e5761207d61446a565b5b602002602001018181525050808061209590614382565b915050611ffb565b506120b9848383604051806020016040528060008152506127de565b5050612101565b612100826001600460009054906101000a900463ffffffff166120e391906141c5565b63ffffffff166001604051806020016040528060008152506129fc565b5b5050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612174576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216b90613e3c565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516122659190613bba565b60405180910390a3505050565b600080336040516020016122869190613a43565b6040516020818303038152906040528051906020012090506001816040516020016122b19190613a5e565b60405160208183030381529060405280519060200120868686604051600081526020016040526040516122e79493929190613bd5565b6020604051602081039080840390855afa158015612309573d6000803e3d6000fd5b5050506020604051035173ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16149150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156123dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123d490613d5c565b60405180910390fd5b60006123e7611a51565b90506124078187876123f888612b92565b61240188612b92565b876125ef565b600080600086815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508381101561249e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249590613dbc565b60405180910390fd5b83810360008087815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508360008087815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546125539190614076565b925050819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6288886040516125d0929190613ed7565b60405180910390a46125e6828888888888612c0c565b50505050505050565b505050505050565b6126168473ffffffffffffffffffffffffffffffffffffffff16612df3565b156127d6578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b815260040161265c959493929190613a9f565b602060405180830381600087803b15801561267657600080fd5b505af19250505080156126a757506040513d601f19601f820116820180604052508101906126a491906134ae565b60015b61274d576126b36144c8565b806308c379a0141561271057506126c8614a9f565b806126d35750612712565b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127079190613c1a565b60405180910390fd5b505b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161274490613c3c565b60405180910390fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146127d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127cb90613c5c565b60405180910390fd5b505b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561284e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161284590613e9c565b60405180910390fd5b8151835114612892576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161288990613e7c565b60405180910390fd5b600061289c611a51565b90506128ad816000878787876125ef565b60005b8451811015612966578381815181106128cc576128cb61446a565b5b60200260200101516000808784815181106128ea576128e961446a565b5b6020026020010151815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461294c9190614076565b92505081905550808061295e90614339565b9150506128b0565b508473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516129de929190613b83565b60405180910390a46129f5816000878787876125f7565b5050505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612a6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a6390613e9c565b60405180910390fd5b6000612a76611a51565b9050612a9781600087612a8888612b92565b612a9188612b92565b876125ef565b8260008086815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612af69190614076565b925050819055508473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628787604051612b74929190613ed7565b60405180910390a4612b8b81600087878787612c0c565b5050505050565b60606000600167ffffffffffffffff811115612bb157612bb0614499565b5b604051908082528060200260200182016040528015612bdf5781602001602082028036833780820191505090505b5090508281600081518110612bf757612bf661446a565b5b60200260200101818152505080915050919050565b612c2b8473ffffffffffffffffffffffffffffffffffffffff16612df3565b15612deb578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b8152600401612c71959493929190613b07565b602060405180830381600087803b158015612c8b57600080fd5b505af1925050508015612cbc57506040513d601f19601f82011682018060405250810190612cb991906134ae565b60015b612d6257612cc86144c8565b806308c379a01415612d255750612cdd614a9f565b80612ce85750612d27565b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d1c9190613c1a565b60405180910390fd5b505b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d5990613c3c565b60405180910390fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614612de9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612de090613c5c565b60405180910390fd5b505b505050505050565b600080823b905060008111915050919050565b828054612e12906142d6565b90600052602060002090601f016020900481019282612e345760008555612e7b565b82601f10612e4d57805160ff1916838001178555612e7b565b82800160010185558215612e7b579182015b82811115612e7a578251825591602001919060010190612e5f565b5b509050612e889190612e8c565b5090565b5b80821115612ea5576000816000905550600101612e8d565b5090565b6000612ebc612eb784613f40565b613f1b565b90508083825260208201905082856020860282011115612edf57612ede6144ef565b5b60005b85811015612f0f5781612ef5888261300d565b845260208401935060208301925050600181019050612ee2565b5050509392505050565b6000612f2c612f2784613f6c565b613f1b565b90508083825260208201905082856020860282011115612f4f57612f4e6144ef565b5b60005b85811015612f7f5781612f65888261312e565b845260208401935060208301925050600181019050612f52565b5050509392505050565b6000612f9c612f9784613f98565b613f1b565b905082815260208101848484011115612fb857612fb76144f4565b5b612fc3848285614294565b509392505050565b6000612fde612fd984613fc9565b613f1b565b905082815260208101848484011115612ffa57612ff96144f4565b5b613005848285614294565b509392505050565b60008135905061301c81614b35565b92915050565b600082601f830112613037576130366144ea565b5b8135613047848260208601612ea9565b91505092915050565b600082601f830112613065576130646144ea565b5b8135613075848260208601612f19565b91505092915050565b60008135905061308d81614b4c565b92915050565b6000813590506130a281614b63565b92915050565b6000813590506130b781614b7a565b92915050565b6000815190506130cc81614b7a565b92915050565b600082601f8301126130e7576130e66144ea565b5b81356130f7848260208601612f89565b91505092915050565b600082601f830112613115576131146144ea565b5b8135613125848260208601612fcb565b91505092915050565b60008135905061313d81614b91565b92915050565b60008135905061315281614ba8565b92915050565b60008135905061316781614bbf565b92915050565b600060208284031215613183576131826144fe565b5b60006131918482850161300d565b91505092915050565b600080604083850312156131b1576131b06144fe565b5b60006131bf8582860161300d565b92505060206131d08582860161300d565b9150509250929050565b600080600080600060a086880312156131f6576131f56144fe565b5b60006132048882890161300d565b95505060206132158882890161300d565b945050604086013567ffffffffffffffff811115613236576132356144f9565b5b61324288828901613050565b935050606086013567ffffffffffffffff811115613263576132626144f9565b5b61326f88828901613050565b925050608086013567ffffffffffffffff8111156132905761328f6144f9565b5b61329c888289016130d2565b9150509295509295909350565b600080600080600060a086880312156132c5576132c46144fe565b5b60006132d38882890161300d565b95505060206132e48882890161300d565b94505060406132f58882890161312e565b93505060606133068882890161312e565b925050608086013567ffffffffffffffff811115613327576133266144f9565b5b613333888289016130d2565b9150509295509295909350565b60008060408385031215613357576133566144fe565b5b60006133658582860161300d565b92505060206133768582860161307e565b9150509250929050565b60008060408385031215613397576133966144fe565b5b60006133a58582860161300d565b92505060206133b68582860161312e565b9150509250929050565b6000602082840312156133d6576133d56144fe565b5b600082013567ffffffffffffffff8111156133f4576133f36144f9565b5b61340084828501613022565b91505092915050565b600080604083850312156134205761341f6144fe565b5b600083013567ffffffffffffffff81111561343e5761343d6144f9565b5b61344a85828601613022565b925050602083013567ffffffffffffffff81111561346b5761346a6144f9565b5b61347785828601613050565b9150509250929050565b600060208284031215613497576134966144fe565b5b60006134a5848285016130a8565b91505092915050565b6000602082840312156134c4576134c36144fe565b5b60006134d2848285016130bd565b91505092915050565b6000602082840312156134f1576134f06144fe565b5b600082013567ffffffffffffffff81111561350f5761350e6144f9565b5b61351b84828501613100565b91505092915050565b60006020828403121561353a576135396144fe565b5b60006135488482850161312e565b91505092915050565b600060208284031215613567576135666144fe565b5b600061357584828501613143565b91505092915050565b60008060008060808587031215613598576135976144fe565b5b60006135a687828801613143565b94505060206135b787828801613158565b93505060406135c887828801613093565b92505060606135d987828801613093565b91505092959194509250565b60006135f18383613a07565b60208301905092915050565b613606816141f9565b82525050565b61361d613618826141f9565b6143af565b82525050565b600061362e8261400a565b6136388185614038565b935061364383613ffa565b8060005b8381101561367457815161365b88826135e5565b97506136668361402b565b925050600181019050613647565b5085935050505092915050565b61368a8161420b565b82525050565b61369981614217565b82525050565b6136b06136ab82614217565b6143c1565b82525050565b60006136c182614015565b6136cb8185614049565b93506136db8185602086016142a3565b6136e481614503565b840191505092915050565b60006136fa82614020565b613704818561405a565b93506137148185602086016142a3565b61371d81614503565b840191505092915050565b600061373560348361405a565b91506137408261452e565b604082019050919050565b600061375860288361405a565b91506137638261457d565b604082019050919050565b600061377b601c8361406b565b9150613786826145cc565b601c82019050919050565b600061379e602b8361405a565b91506137a9826145f5565b604082019050919050565b60006137c160178361405a565b91506137cc82614644565b602082019050919050565b60006137e460268361405a565b91506137ef8261466d565b604082019050919050565b600061380760298361405a565b9150613812826146bc565b604082019050919050565b600061382a601a8361405a565b91506138358261470b565b602082019050919050565b600061384d601d8361405a565b915061385882614734565b602082019050919050565b600061387060118361405a565b915061387b8261475d565b602082019050919050565b600061389360258361405a565b915061389e82614786565b604082019050919050565b60006138b660328361405a565b91506138c1826147d5565b604082019050919050565b60006138d960178361405a565b91506138e482614824565b602082019050919050565b60006138fc602a8361405a565b91506139078261484d565b604082019050919050565b600061391f602d8361405a565b915061392a8261489c565b604082019050919050565b600061394260298361405a565b915061394d826148eb565b604082019050919050565b600061396560208361405a565b91506139708261493a565b602082019050919050565b600061398860298361405a565b915061399382614963565b604082019050919050565b60006139ab60298361405a565b91506139b6826149b2565b604082019050919050565b60006139ce60288361405a565b91506139d982614a01565b604082019050919050565b60006139f160218361405a565b91506139fc82614a50565b604082019050919050565b613a108161426d565b82525050565b613a1f8161426d565b82525050565b613a2e81614277565b82525050565b613a3d81614287565b82525050565b6000613a4f828461360c565b60148201915081905092915050565b6000613a698261376e565b9150613a75828461369f565b60208201915081905092915050565b6000602082019050613a9960008301846135fd565b92915050565b600060a082019050613ab460008301886135fd565b613ac160208301876135fd565b8181036040830152613ad38186613623565b90508181036060830152613ae78185613623565b90508181036080830152613afb81846136b6565b90509695505050505050565b600060a082019050613b1c60008301886135fd565b613b2960208301876135fd565b613b366040830186613a16565b613b436060830185613a16565b8181036080830152613b5581846136b6565b90509695505050505050565b60006020820190508181036000830152613b7b8184613623565b905092915050565b60006040820190508181036000830152613b9d8185613623565b90508181036020830152613bb18184613623565b90509392505050565b6000602082019050613bcf6000830184613681565b92915050565b6000608082019050613bea6000830187613690565b613bf76020830186613a34565b613c046040830185613690565b613c116060830184613690565b95945050505050565b60006020820190508181036000830152613c3481846136ef565b905092915050565b60006020820190508181036000830152613c5581613728565b9050919050565b60006020820190508181036000830152613c758161374b565b9050919050565b60006020820190508181036000830152613c9581613791565b9050919050565b60006020820190508181036000830152613cb5816137b4565b9050919050565b60006020820190508181036000830152613cd5816137d7565b9050919050565b60006020820190508181036000830152613cf5816137fa565b9050919050565b60006020820190508181036000830152613d158161381d565b9050919050565b60006020820190508181036000830152613d3581613840565b9050919050565b60006020820190508181036000830152613d5581613863565b9050919050565b60006020820190508181036000830152613d7581613886565b9050919050565b60006020820190508181036000830152613d95816138a9565b9050919050565b60006020820190508181036000830152613db5816138cc565b9050919050565b60006020820190508181036000830152613dd5816138ef565b9050919050565b60006020820190508181036000830152613df581613912565b9050919050565b60006020820190508181036000830152613e1581613935565b9050919050565b60006020820190508181036000830152613e3581613958565b9050919050565b60006020820190508181036000830152613e558161397b565b9050919050565b60006020820190508181036000830152613e758161399e565b9050919050565b60006020820190508181036000830152613e95816139c1565b9050919050565b60006020820190508181036000830152613eb5816139e4565b9050919050565b6000602082019050613ed16000830184613a16565b92915050565b6000604082019050613eec6000830185613a16565b613ef96020830184613a16565b9392505050565b6000602082019050613f156000830184613a25565b92915050565b6000613f25613f36565b9050613f318282614308565b919050565b6000604051905090565b600067ffffffffffffffff821115613f5b57613f5a614499565b5b602082029050602081019050919050565b600067ffffffffffffffff821115613f8757613f86614499565b5b602082029050602081019050919050565b600067ffffffffffffffff821115613fb357613fb2614499565b5b613fbc82614503565b9050602081019050919050565b600067ffffffffffffffff821115613fe457613fe3614499565b5b613fed82614503565b9050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b60006140818261426d565b915061408c8361426d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156140c1576140c06143dd565b5b828201905092915050565b60006140d782614277565b91506140e283614277565b92508263ffffffff038211156140fb576140fa6143dd565b5b828201905092915050565b60006141118261426d565b915061411c8361426d565b92508261412c5761412b61440c565b5b828204905092915050565b60006141428261426d565b915061414d8361426d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614186576141856143dd565b5b828202905092915050565b600061419c8261426d565b91506141a78361426d565b9250828210156141ba576141b96143dd565b5b828203905092915050565b60006141d082614277565b91506141db83614277565b9250828210156141ee576141ed6143dd565b5b828203905092915050565b60006142048261424d565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b600060ff82169050919050565b82818337600083830152505050565b60005b838110156142c15780820151818401526020810190506142a6565b838111156142d0576000848401525b50505050565b600060028204905060018216806142ee57607f821691505b602082108114156143025761430161443b565b5b50919050565b61431182614503565b810181811067ffffffffffffffff821117156143305761432f614499565b5b80604052505050565b60006143448261426d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614377576143766143dd565b5b600182019050919050565b600061438d82614277565b915063ffffffff8214156143a4576143a36143dd565b5b600182019050919050565b60006143ba826143cb565b9050919050565b6000819050919050565b60006143d682614514565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600060033d11156144e75760046000803e6144e4600051614521565b90505b90565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b60008160e01c9050919050565b7f455243313135353a207472616e7366657220746f206e6f6e204552433131353560008201527f526563656976657220696d706c656d656e746572000000000000000000000000602082015250565b7f455243313135353a204552433131353552656365697665722072656a6563746560008201527f6420746f6b656e73000000000000000000000000000000000000000000000000602082015250565b7f19457468657265756d205369676e6564204d6573736167653a0a333200000000600082015250565b7f455243313135353a2062616c616e636520717565727920666f7220746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b7f496e76616c696420616363657373206d6573736167652e000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260008201527f20617070726f7665640000000000000000000000000000000000000000000000602082015250565b7f5075626c69632073616c65206973206e6f74206163746976652e000000000000600082015250565b7f436f756e74206d7573742062652067726561746572207468616e20302e000000600082015250565b7f4e6f7420656e6f7567682065746865722e000000000000000000000000000000600082015250565b7f455243313135353a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a207472616e736665722063616c6c6572206973206e6f742060008201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000602082015250565b7f5072652d73616c65206973206e6f74206163746976652e000000000000000000600082015250565b7f455243313135353a20696e73756666696369656e742062616c616e636520666f60008201527f72207472616e7366657200000000000000000000000000000000000000000000602082015250565b7f436f756e74206578636565647320746865206d6178696d756d20616c6c6f776560008201527f64207065722077616c6c65742e00000000000000000000000000000000000000602082015250565b7f436f756e74206578636565647320746865206d6178696d756d20616c6c6f776560008201527f6420737570706c792e0000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f455243313135353a2073657474696e6720617070726f76616c2073746174757360008201527f20666f722073656c660000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206163636f756e747320616e6420696473206c656e67746860008201527f206d69736d617463680000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060008201527f6d69736d61746368000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b600060443d1015614aaf57614b32565b614ab7613f36565b60043d036004823e80513d602482011167ffffffffffffffff82111715614adf575050614b32565b808201805167ffffffffffffffff811115614afd5750505050614b32565b80602083010160043d038501811115614b1a575050505050614b32565b614b2982602001850186614308565b82955050505050505b90565b614b3e816141f9565b8114614b4957600080fd5b50565b614b558161420b565b8114614b6057600080fd5b50565b614b6c81614217565b8114614b7757600080fd5b50565b614b8381614221565b8114614b8e57600080fd5b50565b614b9a8161426d565b8114614ba557600080fd5b50565b614bb181614277565b8114614bbc57600080fd5b50565b614bc881614287565b8114614bd357600080fd5b5056fea26469706673582212203c94850f8681a1d467b91d96107926ecfca3fe879fc54ec2c0330f7e35b0db3064736f6c63430008070033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000005c68747470733a2f2f637279707433642e6d7970696e6174612e636c6f75642f697066732f516d6337554a4d5767455169546673487254646a3468437835506f3661474d77725354654c714a544841706a776a2f7b69647d2e6a736f6e00000000
-----Decoded View---------------
Arg [0] : uri (string): https://crypt3d.mypinata.cloud/ipfs/Qmc7UJMWgEQiTfsHrTdj4hCx5Po6aGMwrSTeLqJTHApjwj/{id}.json
-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000020
Arg [1] : 000000000000000000000000000000000000000000000000000000000000005c
Arg [2] : 68747470733a2f2f637279707433642e6d7970696e6174612e636c6f75642f69
Arg [3] : 7066732f516d6337554a4d5767455169546673487254646a3468437835506f36
Arg [4] : 61474d77725354654c714a544841706a776a2f7b69647d2e6a736f6e00000000
Deployed Bytecode Sourcemap
36559:4935:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22978:231;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22001:310;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37406:89;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;38137:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;36610:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36892:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22722:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38004:121;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37173:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37844:148;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37620:93;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24917:442;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;37118:42;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;40856:633;;;;;;;;;;;;;:::i;:::-;;37507:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;37055:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23375:524;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36940:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2606:103;;;;;;;;;;;;;:::i;:::-;;36833:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;40179:466;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1955:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37725:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;36664:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23972:155;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;39554:613;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;36990:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36771:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36718:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;40657:187;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24199:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24439:401;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2864:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22978:231;23064:7;23111:1;23092:21;;:7;:21;;;;23084:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;23179:9;:13;23189:2;23179:13;;;;;;;;;;;:22;23193:7;23179:22;;;;;;;;;;;;;;;;23172:29;;22978:231;;;;:::o;22001:310::-;22103:4;22155:26;22140:41;;;:11;:41;;;;:110;;;;22213:37;22198:52;;;:11;:52;;;;22140:110;:163;;;;22267:36;22291:11;22267:23;:36::i;:::-;22140:163;22120:183;;22001:310;;;:::o;37406:89::-;2186:12;:10;:12::i;:::-;2175:23;;:7;:5;:7::i;:::-;:23;;;2167:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;37473:12:::1;37481:3;37473:7;:12::i;:::-;37406:89:::0;:::o;38137:106::-;2186:12;:10;:12::i;:::-;2175:23;;:7;:5;:7::i;:::-;:23;;;2167:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;38227:6:::1;38211:13;;:22;;;;;;;;;;;;;;;;;;38137:106:::0;:::o;36610:45::-;;;;;;;;;;;;;;;;;;;:::o;36892:39::-;;;;;;;;;;;;;:::o;22722:105::-;22782:13;22815:4;22808:11;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22722:105;;;:::o;38004:121::-;38055:4;38100:15;;;;;;;;;;;38081:34;;:15;:34;;38074:41;;38004:121;:::o;37173:29::-;;;;;;;;;;;;;:::o;37844:148::-;37892:4;37937:12;;;;;;;;;;;37918:31;;:15;:31;;:64;;;;;37972:10;;;;;;;;;;;37953:29;;:15;:29;;37918:64;37911:71;;37844:148;:::o;37620:93::-;2186:12;:10;:12::i;:::-;2175:23;;:7;:5;:7::i;:::-;:23;;;2167:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;37700:3:::1;37687:10;;:16;;;;;;;;;;;;;;;;;;37620:93:::0;:::o;24917:442::-;25158:12;:10;:12::i;:::-;25150:20;;:4;:20;;;:60;;;;25174:36;25191:4;25197:12;:10;:12::i;:::-;25174:16;:36::i;:::-;25150:60;25128:160;;;;;;;;;;;;:::i;:::-;;;;;;;;;25299:52;25322:4;25328:2;25332:3;25337:7;25346:4;25299:22;:52::i;:::-;24917:442;;;;;:::o;37118:42::-;;;;;;;;;;;;;:::o;40856:633::-;2186:12;:10;:12::i;:::-;2175:23;;:7;:5;:7::i;:::-;:23;;;2167:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;40908:27:::1;:161;;;;;;;;40955:42;40908:161;;;;;;;;41014:42;40908:161;;;;;;::::0;::::1;;41086:23;:53;;;;;;;;41120:4;41086:53;;;;;;;;41134:3;41086:53;;;;;;::::0;::::1;;41156:15;41174:21;41156:39;;41217:8;41212:268;41235:16;41231:1;:20;;;41212:268;;;41275:14;41316:1;41297:16;:20;;;;:::i;:::-;41292:1;:25;;;:119;;41406:5;41393:6;41400:1;41393:9;;;;;;;;;:::i;:::-;;;;;;41383:19;;:7;:19;;;;:::i;:::-;41382:29;;;;:::i;:::-;41292:119;;;41339:21;41292:119;41275:136;;41436:9;41446:1;41436:12;;;;;;;;;:::i;:::-;;;;;;41428:30;;:38;41459:6;41428:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;41258:222;41253:3;;;;;:::i;:::-;;;;41212:268;;;;40895:594;;;40856:633::o:0;37507:101::-;2186:12;:10;:12::i;:::-;2175:23;;:7;:5;:7::i;:::-;:23;;;2167:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;37593:5:::1;37578:12;;:20;;;;;;;;;;;;;;;;;;37507:101:::0;:::o;37055:50::-;37103:2;37055:50;:::o;23375:524::-;23531:16;23592:3;:10;23573:8;:15;:29;23565:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;23661:30;23708:8;:15;23694:30;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23661:63;;23742:9;23737:122;23761:8;:15;23757:1;:19;23737:122;;;23817:30;23827:8;23836:1;23827:11;;;;;;;;:::i;:::-;;;;;;;;23840:3;23844:1;23840:6;;;;;;;;:::i;:::-;;;;;;;;23817:9;:30::i;:::-;23798:13;23812:1;23798:16;;;;;;;;:::i;:::-;;;;;;;:49;;;;;23778:3;;;;:::i;:::-;;;23737:122;;;;23878:13;23871:20;;;23375:524;;;;:::o;36940:37::-;;;;;;;;;;;;;:::o;2606:103::-;2186:12;:10;:12::i;:::-;2175:23;;:7;:5;:7::i;:::-;:23;;;2167:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2671:30:::1;2698:1;2671:18;:30::i;:::-;2606:103::o:0;36833:46::-;36878:1;36833:46;:::o;40179:466::-;40255:20;:18;:20::i;:::-;40247:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;40362:5;40340:27;;37036:10;40340:27;;;;:::i;:::-;40327:9;:40;;40319:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;37103:2;40426:52;;40447:5;40426:6;:18;40433:10;40426:18;;;;;;;;;;;;;;;;;;;;;;;;;:26;;;;:::i;:::-;:52;;;;40402:153;;;;;;;;;;;;:::i;:::-;;;;;;;;;40594:5;40572:6;:18;40579:10;40572:18;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;40612:23;40617:10;40629:5;40612:4;:23::i;:::-;40179:466;:::o;1955:87::-;2001:7;2028:6;;;;;;;;;;;2021:13;;1955:87;:::o;37725:107::-;2186:12;:10;:12::i;:::-;2175:23;;:7;:5;:7::i;:::-;:23;;;2167:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;37817:5:::1;37799:15;;:23;;;;;;;;;;;;;;;;;;37725:107:::0;:::o;36664:41::-;;;;;;;;;;;;;;;;;;;:::o;23972:155::-;24067:52;24086:12;:10;:12::i;:::-;24100:8;24110;24067:18;:52::i;:::-;23972:155;;:::o;39554:613::-;39711:17;:15;:17::i;:::-;39703:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;39809:5;39790:24;;36814:10;39790:24;;;;:::i;:::-;39777:9;:37;;39769:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;36878:1;39873:49;;39894:5;39873:6;:18;39880:10;39873:18;;;;;;;;;;;;;;;;;;;;;;;;;:26;;;;:::i;:::-;:49;;;;39849:150;;;;;;;;;;;;:::i;:::-;;;;;;;;;40020:29;40041:1;40044;40047;40020:20;:29::i;:::-;40012:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;40116:5;40094:6;:18;40101:10;40094:18;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;40134:23;40139:10;40151:5;40134:4;:23::i;:::-;39554:613;;;;:::o;36990:56::-;37036:10;36990:56;:::o;36771:53::-;36814:10;36771:53;:::o;36718:40::-;36753:5;36718:40;:::o;40657:187::-;2186:12;:10;:12::i;:::-;2175:23;;:7;:5;:7::i;:::-;:23;;;2167:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;40741:9:::1;40736:99;40760:9;:16;40756:1;:20;40736:99;;;40800:21;40805:9;40815:1;40805:12;;;;;;;;:::i;:::-;;;;;;;;40819:1;40800:4;:21::i;:::-;40778:3;;;;;:::i;:::-;;;;40736:99;;;;40657:187:::0;:::o;24199:168::-;24298:4;24322:18;:27;24341:7;24322:27;;;;;;;;;;;;;;;:37;24350:8;24322:37;;;;;;;;;;;;;;;;;;;;;;;;;24315:44;;24199:168;;;;:::o;24439:401::-;24655:12;:10;:12::i;:::-;24647:20;;:4;:20;;;:60;;;;24671:36;24688:4;24694:12;:10;:12::i;:::-;24671:16;:36::i;:::-;24647:60;24625:151;;;;;;;;;;;;:::i;:::-;;;;;;;;;24787:45;24805:4;24811:2;24815;24819:6;24827:4;24787:17;:45::i;:::-;24439:401;;;;;:::o;2864:201::-;2186:12;:10;:12::i;:::-;2175:23;;:7;:5;:7::i;:::-;:23;;;2167:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2973:1:::1;2953:22;;:8;:22;;;;2945:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;3029:28;3048:8;3029:18;:28::i;:::-;2864:201:::0;:::o;13356:157::-;13441:4;13480:25;13465:40;;;:11;:40;;;;13458:47;;13356:157;;;:::o;679:98::-;732:7;759:10;752:17;;679:98;:::o;28919:88::-;28993:6;28986:4;:13;;;;;;;;;;;;:::i;:::-;;28919:88;:::o;27001:1074::-;27228:7;:14;27214:3;:10;:28;27206:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;27320:1;27306:16;;:2;:16;;;;27298:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;27377:16;27396:12;:10;:12::i;:::-;27377:31;;27421:60;27442:8;27452:4;27458:2;27462:3;27467:7;27476:4;27421:20;:60::i;:::-;27499:9;27494:421;27518:3;:10;27514:1;:14;27494:421;;;27550:10;27563:3;27567:1;27563:6;;;;;;;;:::i;:::-;;;;;;;;27550:19;;27584:14;27601:7;27609:1;27601:10;;;;;;;;:::i;:::-;;;;;;;;27584:27;;27628:19;27650:9;:13;27660:2;27650:13;;;;;;;;;;;:19;27664:4;27650:19;;;;;;;;;;;;;;;;27628:41;;27707:6;27692:11;:21;;27684:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;27840:6;27826:11;:20;27804:9;:13;27814:2;27804:13;;;;;;;;;;;:19;27818:4;27804:19;;;;;;;;;;;;;;;:42;;;;27897:6;27876:9;:13;27886:2;27876:13;;;;;;;;;;;:17;27890:2;27876:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;27535:380;;;27530:3;;;;:::i;:::-;;;27494:421;;;;27962:2;27932:47;;27956:4;27932:47;;27946:8;27932:47;;;27966:3;27971:7;27932:47;;;;;;;:::i;:::-;;;;;;;;27992:75;28028:8;28038:4;28044:2;28048:3;28053:7;28062:4;27992:35;:75::i;:::-;27195:880;27001:1074;;;;;:::o;3225:191::-;3299:16;3318:6;;;;;;;;;;;3299:25;;3344:8;3335:6;;:17;;;;;;;;;;;;;;;;;;3399:8;3368:40;;3389:8;3368:40;;;;;;;;;;;;3288:128;3225:191;:::o;38769:773::-;38847:1;38839:5;:9;;;38831:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;36753:5;38919:32;;38933:5;38919:11;;;;;;;;;;;:19;;;;:::i;:::-;:32;;;;38895:129;;;;;;;;;;;;:::i;:::-;;;;;;;;;39056:5;39041:11;;:20;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;39090:1;39082:5;:9;;;39078:455;;;39110:20;39155:5;39147:14;;39133:29;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39110:52;;39179:24;39228:5;39220:14;;39206:29;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39179:56;;39261:8;39256:141;39279:5;39275:9;;:1;:9;;;39256:141;;;39343:1;39335:5;39321:11;;;;;;;;;;;:19;;;;:::i;:::-;:23;;;;:::i;:::-;39312:32;;:3;39316:1;39312:6;;;;;;;;;;:::i;:::-;;;;;;;:32;;;;;39378:1;39365:7;39373:1;39365:10;;;;;;;;;;:::i;:::-;;;;;;;:14;;;;;39286:3;;;;;:::i;:::-;;;;39256:141;;;;39417:32;39428:2;39432:3;39437:7;39417:32;;;;;;;;;;;;:10;:32::i;:::-;39093:370;;39078:455;;;39486:33;39492:2;39510:1;39496:11;;;;;;;;;;;:15;;;;:::i;:::-;39486:33;;39513:1;39486:33;;;;;;;;;;;;:5;:33::i;:::-;39078:455;38769:773;;:::o;33187:331::-;33342:8;33333:17;;:5;:17;;;;33325:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;33445:8;33407:18;:25;33426:5;33407:25;;;;;;;;;;;;;;;:35;33433:8;33407:35;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;33491:8;33469:41;;33484:5;33469:41;;;33501:8;33469:41;;;;;;:::i;:::-;;;;;;;;33187:331;;;:::o;38255:502::-;38381:4;38400:12;38442:10;38425:28;;;;;;;;:::i;:::-;;;;;;;;;;;;;38415:39;;;;;;38400:54;;38521:226;38638:4;38585:58;;;;;;;;:::i;:::-;;;;;;;;;;;;;38551:113;;;;;;38685:1;38707;38729;38521:226;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38489:258;;:13;;;;;;;;;;;:258;;;38467:280;;;38255:502;;;;;:::o;25823:820::-;26025:1;26011:16;;:2;:16;;;;26003:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;26082:16;26101:12;:10;:12::i;:::-;26082:31;;26126:96;26147:8;26157:4;26163:2;26167:21;26185:2;26167:17;:21::i;:::-;26190:25;26208:6;26190:17;:25::i;:::-;26217:4;26126:20;:96::i;:::-;26235:19;26257:9;:13;26267:2;26257:13;;;;;;;;;;;:19;26271:4;26257:19;;;;;;;;;;;;;;;;26235:41;;26310:6;26295:11;:21;;26287:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;26435:6;26421:11;:20;26399:9;:13;26409:2;26399:13;;;;;;;;;;;:19;26413:4;26399:19;;;;;;;;;;;;;;;:42;;;;26484:6;26463:9;:13;26473:2;26463:13;;;;;;;;;;;:17;26477:2;26463:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;26539:2;26508:46;;26533:4;26508:46;;26523:8;26508:46;;;26543:2;26547:6;26508:46;;;;;;;:::i;:::-;;;;;;;;26567:68;26598:8;26608:4;26614:2;26618;26622:6;26630:4;26567:30;:68::i;:::-;25992:651;;25823:820;;;;;:::o;34474:221::-;;;;;;;:::o;35455:813::-;35695:15;:2;:13;;;:15::i;:::-;35691:570;;;35748:2;35731:43;;;35775:8;35785:4;35791:3;35796:7;35805:4;35731:79;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;35727:523;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;36123:6;36116:14;;;;;;;;;;;:::i;:::-;;;;;;;;35727:523;;;36172:62;;;;;;;;;;:::i;:::-;;;;;;;;35727:523;35904:48;;;35892:60;;;:8;:60;;;;35888:159;;35977:50;;;;;;;;;;:::i;:::-;;;;;;;;35888:159;35811:251;35691:570;35455:813;;;;;;:::o;30318:735::-;30510:1;30496:16;;:2;:16;;;;30488:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;30583:7;:14;30569:3;:10;:28;30561:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;30655:16;30674:12;:10;:12::i;:::-;30655:31;;30699:66;30720:8;30738:1;30742:2;30746:3;30751:7;30760:4;30699:20;:66::i;:::-;30783:9;30778:103;30802:3;:10;30798:1;:14;30778:103;;;30859:7;30867:1;30859:10;;;;;;;;:::i;:::-;;;;;;;;30834:9;:17;30844:3;30848:1;30844:6;;;;;;;;:::i;:::-;;;;;;;;30834:17;;;;;;;;;;;:21;30852:2;30834:21;;;;;;;;;;;;;;;;:35;;;;;;;:::i;:::-;;;;;;;;30814:3;;;;;:::i;:::-;;;;30778:103;;;;30934:2;30898:53;;30930:1;30898:53;;30912:8;30898:53;;;30938:3;30943:7;30898:53;;;;;;;:::i;:::-;;;;;;;;30964:81;31000:8;31018:1;31022:2;31026:3;31031:7;31040:4;30964:35;:81::i;:::-;30477:576;30318:735;;;;:::o;29393:569::-;29560:1;29546:16;;:2;:16;;;;29538:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;29613:16;29632:12;:10;:12::i;:::-;29613:31;;29657:102;29678:8;29696:1;29700:2;29704:21;29722:2;29704:17;:21::i;:::-;29727:25;29745:6;29727:17;:25::i;:::-;29754:4;29657:20;:102::i;:::-;29793:6;29772:9;:13;29782:2;29772:13;;;;;;;;;;;:17;29786:2;29772:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;29852:2;29815:52;;29848:1;29815:52;;29830:8;29815:52;;;29856:2;29860:6;29815:52;;;;;;;:::i;:::-;;;;;;;;29880:74;29911:8;29929:1;29933:2;29937;29941:6;29949:4;29880:30;:74::i;:::-;29527:435;29393:569;;;;:::o;36276:198::-;36342:16;36371:22;36410:1;36396:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36371:41;;36434:7;36423:5;36429:1;36423:8;;;;;;;;:::i;:::-;;;;;;;:18;;;;;36461:5;36454:12;;;36276:198;;;:::o;34703:744::-;34918:15;:2;:13;;;:15::i;:::-;34914:526;;;34971:2;34954:38;;;34993:8;35003:4;35009:2;35013:6;35021:4;34954:72;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;34950:479;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;35302:6;35295:14;;;;;;;;;;;:::i;:::-;;;;;;;;34950:479;;;35351:62;;;;;;;;;;:::i;:::-;;;;;;;;34950:479;35088:43;;;35076:55;;;:8;:55;;;;35072:154;;35156:50;;;;;;;;;;:::i;:::-;;;;;;;;35072:154;35027:214;34914:526;34703:744;;;;;;:::o;4243:387::-;4303:4;4511:12;4578:7;4566:20;4558:28;;4621:1;4614:4;:8;4607:15;;;4243:387;;;:::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:370::-;2564:5;2613:3;2606:4;2598:6;2594:17;2590:27;2580:122;;2621:79;;:::i;:::-;2580:122;2738:6;2725:20;2763:94;2853:3;2845:6;2838:4;2830:6;2826:17;2763:94;:::i;:::-;2754:103;;2570:293;2493:370;;;;:::o;2886:::-;2957:5;3006:3;2999:4;2991:6;2987:17;2983:27;2973:122;;3014:79;;:::i;:::-;2973:122;3131:6;3118:20;3156:94;3246:3;3238:6;3231:4;3223:6;3219:17;3156:94;:::i;:::-;3147:103;;2963:293;2886:370;;;;:::o;3262:133::-;3305:5;3343:6;3330:20;3321:29;;3359:30;3383:5;3359:30;:::i;:::-;3262:133;;;;:::o;3401:139::-;3447:5;3485:6;3472:20;3463:29;;3501:33;3528:5;3501:33;:::i;:::-;3401:139;;;;:::o;3546:137::-;3591:5;3629:6;3616:20;3607:29;;3645:32;3671:5;3645:32;:::i;:::-;3546:137;;;;:::o;3689:141::-;3745:5;3776:6;3770:13;3761:22;;3792:32;3818:5;3792:32;:::i;:::-;3689:141;;;;:::o;3849:338::-;3904:5;3953:3;3946:4;3938:6;3934:17;3930:27;3920:122;;3961:79;;:::i;:::-;3920:122;4078:6;4065:20;4103:78;4177:3;4169:6;4162:4;4154:6;4150:17;4103:78;:::i;:::-;4094:87;;3910:277;3849:338;;;;:::o;4207:340::-;4263:5;4312:3;4305:4;4297:6;4293:17;4289:27;4279:122;;4320:79;;:::i;:::-;4279:122;4437:6;4424:20;4462:79;4537:3;4529:6;4522:4;4514:6;4510:17;4462:79;:::i;:::-;4453:88;;4269:278;4207:340;;;;:::o;4553:139::-;4599:5;4637:6;4624:20;4615:29;;4653:33;4680:5;4653:33;:::i;:::-;4553:139;;;;:::o;4698:137::-;4743:5;4781:6;4768:20;4759:29;;4797:32;4823:5;4797:32;:::i;:::-;4698:137;;;;:::o;4841:135::-;4885:5;4923:6;4910:20;4901:29;;4939:31;4964:5;4939:31;:::i;:::-;4841:135;;;;:::o;4982:329::-;5041:6;5090:2;5078:9;5069:7;5065:23;5061:32;5058:119;;;5096:79;;:::i;:::-;5058:119;5216:1;5241:53;5286:7;5277:6;5266:9;5262:22;5241:53;:::i;:::-;5231:63;;5187:117;4982:329;;;;:::o;5317:474::-;5385:6;5393;5442:2;5430:9;5421:7;5417:23;5413:32;5410:119;;;5448:79;;:::i;:::-;5410:119;5568:1;5593:53;5638:7;5629:6;5618:9;5614:22;5593:53;:::i;:::-;5583:63;;5539:117;5695:2;5721:53;5766:7;5757:6;5746:9;5742:22;5721:53;:::i;:::-;5711:63;;5666:118;5317:474;;;;;:::o;5797:1509::-;5951:6;5959;5967;5975;5983;6032:3;6020:9;6011:7;6007:23;6003:33;6000:120;;;6039:79;;:::i;:::-;6000:120;6159:1;6184:53;6229:7;6220:6;6209:9;6205:22;6184:53;:::i;:::-;6174:63;;6130:117;6286:2;6312:53;6357:7;6348:6;6337:9;6333:22;6312:53;:::i;:::-;6302:63;;6257:118;6442:2;6431:9;6427:18;6414:32;6473:18;6465:6;6462:30;6459:117;;;6495:79;;:::i;:::-;6459:117;6600:78;6670:7;6661:6;6650:9;6646:22;6600:78;:::i;:::-;6590:88;;6385:303;6755:2;6744:9;6740:18;6727:32;6786:18;6778:6;6775:30;6772:117;;;6808:79;;:::i;:::-;6772:117;6913:78;6983:7;6974:6;6963:9;6959:22;6913:78;:::i;:::-;6903:88;;6698:303;7068:3;7057:9;7053:19;7040:33;7100:18;7092:6;7089:30;7086:117;;;7122:79;;:::i;:::-;7086:117;7227:62;7281:7;7272:6;7261:9;7257:22;7227:62;:::i;:::-;7217:72;;7011:288;5797:1509;;;;;;;;:::o;7312:1089::-;7416:6;7424;7432;7440;7448;7497:3;7485:9;7476:7;7472:23;7468:33;7465:120;;;7504:79;;:::i;:::-;7465:120;7624:1;7649:53;7694:7;7685:6;7674:9;7670:22;7649:53;:::i;:::-;7639:63;;7595:117;7751:2;7777:53;7822:7;7813:6;7802:9;7798:22;7777:53;:::i;:::-;7767:63;;7722:118;7879:2;7905:53;7950:7;7941:6;7930:9;7926:22;7905:53;:::i;:::-;7895:63;;7850:118;8007:2;8033:53;8078:7;8069:6;8058:9;8054:22;8033:53;:::i;:::-;8023:63;;7978:118;8163:3;8152:9;8148:19;8135:33;8195:18;8187:6;8184:30;8181:117;;;8217:79;;:::i;:::-;8181:117;8322:62;8376:7;8367:6;8356:9;8352:22;8322:62;:::i;:::-;8312:72;;8106:288;7312:1089;;;;;;;;:::o;8407:468::-;8472:6;8480;8529:2;8517:9;8508:7;8504:23;8500:32;8497:119;;;8535:79;;:::i;:::-;8497:119;8655:1;8680:53;8725:7;8716:6;8705:9;8701:22;8680:53;:::i;:::-;8670:63;;8626:117;8782:2;8808:50;8850:7;8841:6;8830:9;8826:22;8808:50;:::i;:::-;8798:60;;8753:115;8407:468;;;;;:::o;8881:474::-;8949:6;8957;9006:2;8994:9;8985:7;8981:23;8977:32;8974:119;;;9012:79;;:::i;:::-;8974:119;9132:1;9157:53;9202:7;9193:6;9182:9;9178:22;9157:53;:::i;:::-;9147:63;;9103:117;9259:2;9285:53;9330:7;9321:6;9310:9;9306:22;9285:53;:::i;:::-;9275:63;;9230:118;8881:474;;;;;:::o;9361:539::-;9445:6;9494:2;9482:9;9473:7;9469:23;9465:32;9462:119;;;9500:79;;:::i;:::-;9462:119;9648:1;9637:9;9633:17;9620:31;9678:18;9670:6;9667:30;9664:117;;;9700:79;;:::i;:::-;9664:117;9805:78;9875:7;9866:6;9855:9;9851:22;9805:78;:::i;:::-;9795:88;;9591:302;9361:539;;;;:::o;9906:894::-;10024:6;10032;10081:2;10069:9;10060:7;10056:23;10052:32;10049:119;;;10087:79;;:::i;:::-;10049:119;10235:1;10224:9;10220:17;10207:31;10265:18;10257:6;10254:30;10251:117;;;10287:79;;:::i;:::-;10251:117;10392:78;10462:7;10453:6;10442:9;10438:22;10392:78;:::i;:::-;10382:88;;10178:302;10547:2;10536:9;10532:18;10519:32;10578:18;10570:6;10567:30;10564:117;;;10600:79;;:::i;:::-;10564:117;10705:78;10775:7;10766:6;10755:9;10751:22;10705:78;:::i;:::-;10695:88;;10490:303;9906:894;;;;;:::o;10806:327::-;10864:6;10913:2;10901:9;10892:7;10888:23;10884:32;10881:119;;;10919:79;;:::i;:::-;10881:119;11039:1;11064:52;11108:7;11099:6;11088:9;11084:22;11064:52;:::i;:::-;11054:62;;11010:116;10806:327;;;;:::o;11139:349::-;11208:6;11257:2;11245:9;11236:7;11232:23;11228:32;11225:119;;;11263:79;;:::i;:::-;11225:119;11383:1;11408:63;11463:7;11454:6;11443:9;11439:22;11408:63;:::i;:::-;11398:73;;11354:127;11139:349;;;;:::o;11494:509::-;11563:6;11612:2;11600:9;11591:7;11587:23;11583:32;11580:119;;;11618:79;;:::i;:::-;11580:119;11766:1;11755:9;11751:17;11738:31;11796:18;11788:6;11785:30;11782:117;;;11818:79;;:::i;:::-;11782:117;11923:63;11978:7;11969:6;11958:9;11954:22;11923:63;:::i;:::-;11913:73;;11709:287;11494:509;;;;:::o;12009:329::-;12068:6;12117:2;12105:9;12096:7;12092:23;12088:32;12085:119;;;12123:79;;:::i;:::-;12085:119;12243:1;12268:53;12313:7;12304:6;12293:9;12289:22;12268:53;:::i;:::-;12258:63;;12214:117;12009:329;;;;:::o;12344:327::-;12402:6;12451:2;12439:9;12430:7;12426:23;12422:32;12419:119;;;12457:79;;:::i;:::-;12419:119;12577:1;12602:52;12646:7;12637:6;12626:9;12622:22;12602:52;:::i;:::-;12592:62;;12548:116;12344:327;;;;:::o;12677:759::-;12760:6;12768;12776;12784;12833:3;12821:9;12812:7;12808:23;12804:33;12801:120;;;12840:79;;:::i;:::-;12801:120;12960:1;12985:52;13029:7;13020:6;13009:9;13005:22;12985:52;:::i;:::-;12975:62;;12931:116;13086:2;13112:51;13155:7;13146:6;13135:9;13131:22;13112:51;:::i;:::-;13102:61;;13057:116;13212:2;13238:53;13283:7;13274:6;13263:9;13259:22;13238:53;:::i;:::-;13228:63;;13183:118;13340:2;13366:53;13411:7;13402:6;13391:9;13387:22;13366:53;:::i;:::-;13356:63;;13311:118;12677:759;;;;;;;:::o;13442:179::-;13511:10;13532:46;13574:3;13566:6;13532:46;:::i;:::-;13610:4;13605:3;13601:14;13587:28;;13442:179;;;;:::o;13627:118::-;13714:24;13732:5;13714:24;:::i;:::-;13709:3;13702:37;13627:118;;:::o;13751:157::-;13856:45;13876:24;13894:5;13876:24;:::i;:::-;13856:45;:::i;:::-;13851:3;13844:58;13751:157;;:::o;13944:732::-;14063:3;14092:54;14140:5;14092:54;:::i;:::-;14162:86;14241:6;14236:3;14162:86;:::i;:::-;14155:93;;14272:56;14322:5;14272:56;:::i;:::-;14351:7;14382:1;14367:284;14392:6;14389:1;14386:13;14367:284;;;14468:6;14462:13;14495:63;14554:3;14539:13;14495:63;:::i;:::-;14488:70;;14581:60;14634:6;14581:60;:::i;:::-;14571:70;;14427:224;14414:1;14411;14407:9;14402:14;;14367:284;;;14371:14;14667:3;14660:10;;14068:608;;;13944:732;;;;:::o;14682:109::-;14763:21;14778:5;14763:21;:::i;:::-;14758:3;14751:34;14682:109;;:::o;14797:118::-;14884:24;14902:5;14884:24;:::i;:::-;14879:3;14872:37;14797:118;;:::o;14921:157::-;15026:45;15046:24;15064:5;15046:24;:::i;:::-;15026:45;:::i;:::-;15021:3;15014:58;14921:157;;:::o;15084:360::-;15170:3;15198:38;15230:5;15198:38;:::i;:::-;15252:70;15315:6;15310:3;15252:70;:::i;:::-;15245:77;;15331:52;15376:6;15371:3;15364:4;15357:5;15353:16;15331:52;:::i;:::-;15408:29;15430:6;15408:29;:::i;:::-;15403:3;15399:39;15392:46;;15174:270;15084:360;;;;:::o;15450:364::-;15538:3;15566:39;15599:5;15566:39;:::i;:::-;15621:71;15685:6;15680:3;15621:71;:::i;:::-;15614:78;;15701:52;15746:6;15741:3;15734:4;15727:5;15723:16;15701:52;:::i;:::-;15778:29;15800:6;15778:29;:::i;:::-;15773:3;15769:39;15762:46;;15542:272;15450:364;;;;:::o;15820:366::-;15962:3;15983:67;16047:2;16042:3;15983:67;:::i;:::-;15976:74;;16059:93;16148:3;16059:93;:::i;:::-;16177:2;16172:3;16168:12;16161:19;;15820:366;;;:::o;16192:::-;16334:3;16355:67;16419:2;16414:3;16355:67;:::i;:::-;16348:74;;16431:93;16520:3;16431:93;:::i;:::-;16549:2;16544:3;16540:12;16533:19;;16192:366;;;:::o;16564:402::-;16724:3;16745:85;16827:2;16822:3;16745:85;:::i;:::-;16738:92;;16839:93;16928:3;16839:93;:::i;:::-;16957:2;16952:3;16948:12;16941:19;;16564:402;;;:::o;16972:366::-;17114:3;17135:67;17199:2;17194:3;17135:67;:::i;:::-;17128:74;;17211:93;17300:3;17211:93;:::i;:::-;17329:2;17324:3;17320:12;17313:19;;16972:366;;;:::o;17344:::-;17486:3;17507:67;17571:2;17566:3;17507:67;:::i;:::-;17500:74;;17583:93;17672:3;17583:93;:::i;:::-;17701:2;17696:3;17692:12;17685:19;;17344:366;;;:::o;17716:::-;17858:3;17879:67;17943:2;17938:3;17879:67;:::i;:::-;17872:74;;17955:93;18044:3;17955:93;:::i;:::-;18073:2;18068:3;18064:12;18057:19;;17716:366;;;:::o;18088:::-;18230:3;18251:67;18315:2;18310:3;18251:67;:::i;:::-;18244:74;;18327:93;18416:3;18327:93;:::i;:::-;18445:2;18440:3;18436:12;18429:19;;18088:366;;;:::o;18460:::-;18602:3;18623:67;18687:2;18682:3;18623:67;:::i;:::-;18616:74;;18699:93;18788:3;18699:93;:::i;:::-;18817:2;18812:3;18808:12;18801:19;;18460:366;;;:::o;18832:::-;18974:3;18995:67;19059:2;19054:3;18995:67;:::i;:::-;18988:74;;19071:93;19160:3;19071:93;:::i;:::-;19189:2;19184:3;19180:12;19173:19;;18832:366;;;:::o;19204:::-;19346:3;19367:67;19431:2;19426:3;19367:67;:::i;:::-;19360:74;;19443:93;19532:3;19443:93;:::i;:::-;19561:2;19556:3;19552:12;19545:19;;19204:366;;;:::o;19576:::-;19718:3;19739:67;19803:2;19798:3;19739:67;:::i;:::-;19732:74;;19815:93;19904:3;19815:93;:::i;:::-;19933:2;19928:3;19924:12;19917:19;;19576:366;;;:::o;19948:::-;20090:3;20111:67;20175:2;20170:3;20111:67;:::i;:::-;20104:74;;20187:93;20276:3;20187:93;:::i;:::-;20305:2;20300:3;20296:12;20289:19;;19948:366;;;:::o;20320:::-;20462:3;20483:67;20547:2;20542:3;20483:67;:::i;:::-;20476:74;;20559:93;20648:3;20559:93;:::i;:::-;20677:2;20672:3;20668:12;20661:19;;20320:366;;;:::o;20692:::-;20834:3;20855:67;20919:2;20914:3;20855:67;:::i;:::-;20848:74;;20931:93;21020:3;20931:93;:::i;:::-;21049:2;21044:3;21040:12;21033:19;;20692:366;;;:::o;21064:::-;21206:3;21227:67;21291:2;21286:3;21227:67;:::i;:::-;21220:74;;21303:93;21392:3;21303:93;:::i;:::-;21421:2;21416:3;21412:12;21405:19;;21064:366;;;:::o;21436:::-;21578:3;21599:67;21663:2;21658:3;21599:67;:::i;:::-;21592:74;;21675:93;21764:3;21675:93;:::i;:::-;21793:2;21788:3;21784:12;21777:19;;21436:366;;;:::o;21808:::-;21950:3;21971:67;22035:2;22030:3;21971:67;:::i;:::-;21964:74;;22047:93;22136:3;22047:93;:::i;:::-;22165:2;22160:3;22156:12;22149:19;;21808:366;;;:::o;22180:::-;22322:3;22343:67;22407:2;22402:3;22343:67;:::i;:::-;22336:74;;22419:93;22508:3;22419:93;:::i;:::-;22537:2;22532:3;22528:12;22521:19;;22180:366;;;:::o;22552:::-;22694:3;22715:67;22779:2;22774:3;22715:67;:::i;:::-;22708:74;;22791:93;22880:3;22791:93;:::i;:::-;22909:2;22904:3;22900:12;22893:19;;22552:366;;;:::o;22924:::-;23066:3;23087:67;23151:2;23146:3;23087:67;:::i;:::-;23080:74;;23163:93;23252:3;23163:93;:::i;:::-;23281:2;23276:3;23272:12;23265:19;;22924:366;;;:::o;23296:::-;23438:3;23459:67;23523:2;23518:3;23459:67;:::i;:::-;23452:74;;23535:93;23624:3;23535:93;:::i;:::-;23653:2;23648:3;23644:12;23637:19;;23296:366;;;:::o;23668:108::-;23745:24;23763:5;23745:24;:::i;:::-;23740:3;23733:37;23668:108;;:::o;23782:118::-;23869:24;23887:5;23869:24;:::i;:::-;23864:3;23857:37;23782:118;;:::o;23906:115::-;23991:23;24008:5;23991:23;:::i;:::-;23986:3;23979:36;23906:115;;:::o;24027:112::-;24110:22;24126:5;24110:22;:::i;:::-;24105:3;24098:35;24027:112;;:::o;24145:256::-;24257:3;24272:75;24343:3;24334:6;24272:75;:::i;:::-;24372:2;24367:3;24363:12;24356:19;;24392:3;24385:10;;24145:256;;;;:::o;24407:522::-;24620:3;24642:148;24786:3;24642:148;:::i;:::-;24635:155;;24800:75;24871:3;24862:6;24800:75;:::i;:::-;24900:2;24895:3;24891:12;24884:19;;24920:3;24913:10;;24407:522;;;;:::o;24935:222::-;25028:4;25066:2;25055:9;25051:18;25043:26;;25079:71;25147:1;25136:9;25132:17;25123:6;25079:71;:::i;:::-;24935:222;;;;:::o;25163:1053::-;25486:4;25524:3;25513:9;25509:19;25501:27;;25538:71;25606:1;25595:9;25591:17;25582:6;25538:71;:::i;:::-;25619:72;25687:2;25676:9;25672:18;25663:6;25619:72;:::i;:::-;25738:9;25732:4;25728:20;25723:2;25712:9;25708:18;25701:48;25766:108;25869:4;25860:6;25766:108;:::i;:::-;25758:116;;25921:9;25915:4;25911:20;25906:2;25895:9;25891:18;25884:48;25949:108;26052:4;26043:6;25949:108;:::i;:::-;25941:116;;26105:9;26099:4;26095:20;26089:3;26078:9;26074:19;26067:49;26133:76;26204:4;26195:6;26133:76;:::i;:::-;26125:84;;25163:1053;;;;;;;;:::o;26222:751::-;26445:4;26483:3;26472:9;26468:19;26460:27;;26497:71;26565:1;26554:9;26550:17;26541:6;26497:71;:::i;:::-;26578:72;26646:2;26635:9;26631:18;26622:6;26578:72;:::i;:::-;26660;26728:2;26717:9;26713:18;26704:6;26660:72;:::i;:::-;26742;26810:2;26799:9;26795:18;26786:6;26742:72;:::i;:::-;26862:9;26856:4;26852:20;26846:3;26835:9;26831:19;26824:49;26890:76;26961:4;26952:6;26890:76;:::i;:::-;26882:84;;26222:751;;;;;;;;:::o;26979:373::-;27122:4;27160:2;27149:9;27145:18;27137:26;;27209:9;27203:4;27199:20;27195:1;27184:9;27180:17;27173:47;27237:108;27340:4;27331:6;27237:108;:::i;:::-;27229:116;;26979:373;;;;:::o;27358:634::-;27579:4;27617:2;27606:9;27602:18;27594:26;;27666:9;27660:4;27656:20;27652:1;27641:9;27637:17;27630:47;27694:108;27797:4;27788:6;27694:108;:::i;:::-;27686:116;;27849:9;27843:4;27839:20;27834:2;27823:9;27819:18;27812:48;27877:108;27980:4;27971:6;27877:108;:::i;:::-;27869:116;;27358:634;;;;;:::o;27998:210::-;28085:4;28123:2;28112:9;28108:18;28100:26;;28136:65;28198:1;28187:9;28183:17;28174:6;28136:65;:::i;:::-;27998:210;;;;:::o;28214:545::-;28387:4;28425:3;28414:9;28410:19;28402:27;;28439:71;28507:1;28496:9;28492:17;28483:6;28439:71;:::i;:::-;28520:68;28584:2;28573:9;28569:18;28560:6;28520:68;:::i;:::-;28598:72;28666:2;28655:9;28651:18;28642:6;28598:72;:::i;:::-;28680;28748:2;28737:9;28733:18;28724:6;28680:72;:::i;:::-;28214:545;;;;;;;:::o;28765:313::-;28878:4;28916:2;28905:9;28901:18;28893:26;;28965:9;28959:4;28955:20;28951:1;28940:9;28936:17;28929:47;28993:78;29066:4;29057:6;28993:78;:::i;:::-;28985:86;;28765:313;;;;:::o;29084:419::-;29250:4;29288:2;29277:9;29273:18;29265:26;;29337:9;29331:4;29327:20;29323:1;29312:9;29308:17;29301:47;29365:131;29491:4;29365:131;:::i;:::-;29357:139;;29084:419;;;:::o;29509:::-;29675:4;29713:2;29702:9;29698:18;29690:26;;29762:9;29756:4;29752:20;29748:1;29737:9;29733:17;29726:47;29790:131;29916:4;29790:131;:::i;:::-;29782:139;;29509:419;;;:::o;29934:::-;30100:4;30138:2;30127:9;30123:18;30115:26;;30187:9;30181:4;30177:20;30173:1;30162:9;30158:17;30151:47;30215:131;30341:4;30215:131;:::i;:::-;30207:139;;29934:419;;;:::o;30359:::-;30525:4;30563:2;30552:9;30548:18;30540:26;;30612:9;30606:4;30602:20;30598:1;30587:9;30583:17;30576:47;30640:131;30766:4;30640:131;:::i;:::-;30632:139;;30359:419;;;:::o;30784:::-;30950:4;30988:2;30977:9;30973:18;30965:26;;31037:9;31031:4;31027:20;31023:1;31012:9;31008:17;31001:47;31065:131;31191:4;31065:131;:::i;:::-;31057:139;;30784:419;;;:::o;31209:::-;31375:4;31413:2;31402:9;31398:18;31390:26;;31462:9;31456:4;31452:20;31448:1;31437:9;31433:17;31426:47;31490:131;31616:4;31490:131;:::i;:::-;31482:139;;31209:419;;;:::o;31634:::-;31800:4;31838:2;31827:9;31823:18;31815:26;;31887:9;31881:4;31877:20;31873:1;31862:9;31858:17;31851:47;31915:131;32041:4;31915:131;:::i;:::-;31907:139;;31634:419;;;:::o;32059:::-;32225:4;32263:2;32252:9;32248:18;32240:26;;32312:9;32306:4;32302:20;32298:1;32287:9;32283:17;32276:47;32340:131;32466:4;32340:131;:::i;:::-;32332:139;;32059:419;;;:::o;32484:::-;32650:4;32688:2;32677:9;32673:18;32665:26;;32737:9;32731:4;32727:20;32723:1;32712:9;32708:17;32701:47;32765:131;32891:4;32765:131;:::i;:::-;32757:139;;32484:419;;;:::o;32909:::-;33075:4;33113:2;33102:9;33098:18;33090:26;;33162:9;33156:4;33152:20;33148:1;33137:9;33133:17;33126:47;33190:131;33316:4;33190:131;:::i;:::-;33182:139;;32909:419;;;:::o;33334:::-;33500:4;33538:2;33527:9;33523:18;33515:26;;33587:9;33581:4;33577:20;33573:1;33562:9;33558:17;33551:47;33615:131;33741:4;33615:131;:::i;:::-;33607:139;;33334:419;;;:::o;33759:::-;33925:4;33963:2;33952:9;33948:18;33940:26;;34012:9;34006:4;34002:20;33998:1;33987:9;33983:17;33976:47;34040:131;34166:4;34040:131;:::i;:::-;34032:139;;33759:419;;;:::o;34184:::-;34350:4;34388:2;34377:9;34373:18;34365:26;;34437:9;34431:4;34427:20;34423:1;34412:9;34408:17;34401:47;34465:131;34591:4;34465:131;:::i;:::-;34457:139;;34184:419;;;:::o;34609:::-;34775:4;34813:2;34802:9;34798:18;34790:26;;34862:9;34856:4;34852:20;34848:1;34837:9;34833:17;34826:47;34890:131;35016:4;34890:131;:::i;:::-;34882:139;;34609:419;;;:::o;35034:::-;35200:4;35238:2;35227:9;35223:18;35215:26;;35287:9;35281:4;35277:20;35273:1;35262:9;35258:17;35251:47;35315:131;35441:4;35315:131;:::i;:::-;35307:139;;35034:419;;;:::o;35459:::-;35625:4;35663:2;35652:9;35648:18;35640:26;;35712:9;35706:4;35702:20;35698:1;35687:9;35683:17;35676:47;35740:131;35866:4;35740:131;:::i;:::-;35732:139;;35459:419;;;:::o;35884:::-;36050:4;36088:2;36077:9;36073:18;36065:26;;36137:9;36131:4;36127:20;36123:1;36112:9;36108:17;36101:47;36165:131;36291:4;36165:131;:::i;:::-;36157:139;;35884:419;;;:::o;36309:::-;36475:4;36513:2;36502:9;36498:18;36490:26;;36562:9;36556:4;36552:20;36548:1;36537:9;36533:17;36526:47;36590:131;36716:4;36590:131;:::i;:::-;36582:139;;36309:419;;;:::o;36734:::-;36900:4;36938:2;36927:9;36923:18;36915:26;;36987:9;36981:4;36977:20;36973:1;36962:9;36958:17;36951:47;37015:131;37141:4;37015:131;:::i;:::-;37007:139;;36734:419;;;:::o;37159:::-;37325:4;37363:2;37352:9;37348:18;37340:26;;37412:9;37406:4;37402:20;37398:1;37387:9;37383:17;37376:47;37440:131;37566:4;37440:131;:::i;:::-;37432:139;;37159:419;;;:::o;37584:222::-;37677:4;37715:2;37704:9;37700:18;37692:26;;37728:71;37796:1;37785:9;37781:17;37772:6;37728:71;:::i;:::-;37584:222;;;;:::o;37812:332::-;37933:4;37971:2;37960:9;37956:18;37948:26;;37984:71;38052:1;38041:9;38037:17;38028:6;37984:71;:::i;:::-;38065:72;38133:2;38122:9;38118:18;38109:6;38065:72;:::i;:::-;37812:332;;;;;:::o;38150:218::-;38241:4;38279:2;38268:9;38264:18;38256:26;;38292:69;38358:1;38347:9;38343:17;38334:6;38292:69;:::i;:::-;38150:218;;;;:::o;38374:129::-;38408:6;38435:20;;:::i;:::-;38425:30;;38464:33;38492:4;38484:6;38464:33;:::i;:::-;38374:129;;;:::o;38509:75::-;38542:6;38575:2;38569:9;38559:19;;38509:75;:::o;38590:311::-;38667:4;38757:18;38749:6;38746:30;38743:56;;;38779:18;;:::i;:::-;38743:56;38829:4;38821:6;38817:17;38809:25;;38889:4;38883;38879:15;38871:23;;38590:311;;;:::o;38907:::-;38984:4;39074:18;39066:6;39063:30;39060:56;;;39096:18;;:::i;:::-;39060:56;39146:4;39138:6;39134:17;39126:25;;39206:4;39200;39196:15;39188:23;;38907:311;;;:::o;39224:307::-;39285:4;39375:18;39367:6;39364:30;39361:56;;;39397:18;;:::i;:::-;39361:56;39435:29;39457:6;39435:29;:::i;:::-;39427:37;;39519:4;39513;39509:15;39501:23;;39224:307;;;:::o;39537:308::-;39599:4;39689:18;39681:6;39678:30;39675:56;;;39711:18;;:::i;:::-;39675:56;39749:29;39771:6;39749:29;:::i;:::-;39741:37;;39833:4;39827;39823:15;39815:23;;39537:308;;;:::o;39851:132::-;39918:4;39941:3;39933:11;;39971:4;39966:3;39962:14;39954:22;;39851:132;;;:::o;39989:114::-;40056:6;40090:5;40084:12;40074:22;;39989:114;;;:::o;40109:98::-;40160:6;40194:5;40188:12;40178:22;;40109:98;;;:::o;40213:99::-;40265:6;40299:5;40293:12;40283:22;;40213:99;;;:::o;40318:113::-;40388:4;40420;40415:3;40411:14;40403:22;;40318:113;;;:::o;40437:184::-;40536:11;40570:6;40565:3;40558:19;40610:4;40605:3;40601:14;40586:29;;40437:184;;;;:::o;40627:168::-;40710:11;40744:6;40739:3;40732:19;40784:4;40779:3;40775:14;40760:29;;40627:168;;;;:::o;40801:169::-;40885:11;40919:6;40914:3;40907:19;40959:4;40954:3;40950:14;40935:29;;40801:169;;;;:::o;40976:148::-;41078:11;41115:3;41100:18;;40976:148;;;;:::o;41130:305::-;41170:3;41189:20;41207:1;41189:20;:::i;:::-;41184:25;;41223:20;41241:1;41223:20;:::i;:::-;41218:25;;41377:1;41309:66;41305:74;41302:1;41299:81;41296:107;;;41383:18;;:::i;:::-;41296:107;41427:1;41424;41420:9;41413:16;;41130:305;;;;:::o;41441:246::-;41480:3;41499:19;41516:1;41499:19;:::i;:::-;41494:24;;41532:19;41549:1;41532:19;:::i;:::-;41527:24;;41629:1;41617:10;41613:18;41610:1;41607:25;41604:51;;;41635:18;;:::i;:::-;41604:51;41679:1;41676;41672:9;41665:16;;41441:246;;;;:::o;41693:185::-;41733:1;41750:20;41768:1;41750:20;:::i;:::-;41745:25;;41784:20;41802:1;41784:20;:::i;:::-;41779:25;;41823:1;41813:35;;41828:18;;:::i;:::-;41813:35;41870:1;41867;41863:9;41858:14;;41693:185;;;;:::o;41884:348::-;41924:7;41947:20;41965:1;41947:20;:::i;:::-;41942:25;;41981:20;41999:1;41981:20;:::i;:::-;41976:25;;42169:1;42101:66;42097:74;42094:1;42091:81;42086:1;42079:9;42072:17;42068:105;42065:131;;;42176:18;;:::i;:::-;42065:131;42224:1;42221;42217:9;42206:20;;41884:348;;;;:::o;42238:191::-;42278:4;42298:20;42316:1;42298:20;:::i;:::-;42293:25;;42332:20;42350:1;42332:20;:::i;:::-;42327:25;;42371:1;42368;42365:8;42362:34;;;42376:18;;:::i;:::-;42362:34;42421:1;42418;42414:9;42406:17;;42238:191;;;;:::o;42435:188::-;42474:4;42494:19;42511:1;42494:19;:::i;:::-;42489:24;;42527:19;42544:1;42527:19;:::i;:::-;42522:24;;42565:1;42562;42559:8;42556:34;;;42570:18;;:::i;:::-;42556:34;42615:1;42612;42608:9;42600:17;;42435:188;;;;:::o;42629:96::-;42666:7;42695:24;42713:5;42695:24;:::i;:::-;42684:35;;42629:96;;;:::o;42731:90::-;42765:7;42808:5;42801:13;42794:21;42783:32;;42731:90;;;:::o;42827:77::-;42864:7;42893:5;42882:16;;42827:77;;;:::o;42910:149::-;42946:7;42986:66;42979:5;42975:78;42964:89;;42910:149;;;:::o;43065:126::-;43102:7;43142:42;43135:5;43131:54;43120:65;;43065:126;;;:::o;43197:77::-;43234:7;43263:5;43252:16;;43197:77;;;:::o;43280:93::-;43316:7;43356:10;43349:5;43345:22;43334:33;;43280:93;;;:::o;43379:86::-;43414:7;43454:4;43447:5;43443:16;43432:27;;43379:86;;;:::o;43471:154::-;43555:6;43550:3;43545;43532:30;43617:1;43608:6;43603:3;43599:16;43592:27;43471:154;;;:::o;43631:307::-;43699:1;43709:113;43723:6;43720:1;43717:13;43709:113;;;43808:1;43803:3;43799:11;43793:18;43789:1;43784:3;43780:11;43773:39;43745:2;43742:1;43738:10;43733:15;;43709:113;;;43840:6;43837:1;43834:13;43831:101;;;43920:1;43911:6;43906:3;43902:16;43895:27;43831:101;43680:258;43631:307;;;:::o;43944:320::-;43988:6;44025:1;44019:4;44015:12;44005:22;;44072:1;44066:4;44062:12;44093:18;44083:81;;44149:4;44141:6;44137:17;44127:27;;44083:81;44211:2;44203:6;44200:14;44180:18;44177:38;44174:84;;;44230:18;;:::i;:::-;44174:84;43995:269;43944:320;;;:::o;44270:281::-;44353:27;44375:4;44353:27;:::i;:::-;44345:6;44341:40;44483:6;44471:10;44468:22;44447:18;44435:10;44432:34;44429:62;44426:88;;;44494:18;;:::i;:::-;44426:88;44534:10;44530:2;44523:22;44313:238;44270:281;;:::o;44557:233::-;44596:3;44619:24;44637:5;44619:24;:::i;:::-;44610:33;;44665:66;44658:5;44655:77;44652:103;;;44735:18;;:::i;:::-;44652:103;44782:1;44775:5;44771:13;44764:20;;44557:233;;;:::o;44796:175::-;44834:3;44857:23;44874:5;44857:23;:::i;:::-;44848:32;;44902:10;44895:5;44892:21;44889:47;;;44916:18;;:::i;:::-;44889:47;44963:1;44956:5;44952:13;44945:20;;44796:175;;;:::o;44977:100::-;45016:7;45045:26;45065:5;45045:26;:::i;:::-;45034:37;;44977:100;;;:::o;45083:79::-;45122:7;45151:5;45140:16;;45083:79;;;:::o;45168:94::-;45207:7;45236:20;45250:5;45236:20;:::i;:::-;45225:31;;45168:94;;;:::o;45268:180::-;45316:77;45313:1;45306:88;45413:4;45410:1;45403:15;45437:4;45434:1;45427:15;45454:180;45502:77;45499:1;45492:88;45599:4;45596:1;45589:15;45623:4;45620:1;45613:15;45640:180;45688:77;45685:1;45678:88;45785:4;45782:1;45775:15;45809:4;45806:1;45799:15;45826:180;45874:77;45871:1;45864:88;45971:4;45968:1;45961:15;45995:4;45992:1;45985:15;46012:180;46060:77;46057:1;46050:88;46157:4;46154:1;46147:15;46181:4;46178:1;46171:15;46198:183;46233:3;46271:1;46253:16;46250:23;46247:128;;;46309:1;46306;46303;46288:23;46331:34;46362:1;46356:8;46331:34;:::i;:::-;46324:41;;46247:128;46198:183;:::o;46387:117::-;46496:1;46493;46486:12;46510:117;46619:1;46616;46609:12;46633:117;46742:1;46739;46732:12;46756:117;46865:1;46862;46855:12;46879:117;46988:1;46985;46978:12;47002:102;47043:6;47094:2;47090:7;47085:2;47078:5;47074:14;47070:28;47060:38;;47002:102;;;:::o;47110:94::-;47143:8;47191:5;47187:2;47183:14;47162:35;;47110:94;;;:::o;47210:106::-;47254:8;47303:5;47298:3;47294:15;47273:36;;47210:106;;;:::o;47322:239::-;47462:34;47458:1;47450:6;47446:14;47439:58;47531:22;47526:2;47518:6;47514:15;47507:47;47322:239;:::o;47567:227::-;47707:34;47703:1;47695:6;47691:14;47684:58;47776:10;47771:2;47763:6;47759:15;47752:35;47567:227;:::o;47800:214::-;47940:66;47936:1;47928:6;47924:14;47917:90;47800:214;:::o;48020:230::-;48160:34;48156:1;48148:6;48144:14;48137:58;48229:13;48224:2;48216:6;48212:15;48205:38;48020:230;:::o;48256:173::-;48396:25;48392:1;48384:6;48380:14;48373:49;48256:173;:::o;48435:225::-;48575:34;48571:1;48563:6;48559:14;48552:58;48644:8;48639:2;48631:6;48627:15;48620:33;48435:225;:::o;48666:228::-;48806:34;48802:1;48794:6;48790:14;48783:58;48875:11;48870:2;48862:6;48858:15;48851:36;48666:228;:::o;48900:176::-;49040:28;49036:1;49028:6;49024:14;49017:52;48900:176;:::o;49082:179::-;49222:31;49218:1;49210:6;49206:14;49199:55;49082:179;:::o;49267:167::-;49407:19;49403:1;49395:6;49391:14;49384:43;49267:167;:::o;49440:224::-;49580:34;49576:1;49568:6;49564:14;49557:58;49649:7;49644:2;49636:6;49632:15;49625:32;49440:224;:::o;49670:237::-;49810:34;49806:1;49798:6;49794:14;49787:58;49879:20;49874:2;49866:6;49862:15;49855:45;49670:237;:::o;49913:173::-;50053:25;50049:1;50041:6;50037:14;50030:49;49913:173;:::o;50092:229::-;50232:34;50228:1;50220:6;50216:14;50209:58;50301:12;50296:2;50288:6;50284:15;50277:37;50092:229;:::o;50327:232::-;50467:34;50463:1;50455:6;50451:14;50444:58;50536:15;50531:2;50523:6;50519:15;50512:40;50327:232;:::o;50565:228::-;50705:34;50701:1;50693:6;50689:14;50682:58;50774:11;50769:2;50761:6;50757:15;50750:36;50565:228;:::o;50799:182::-;50939:34;50935:1;50927:6;50923:14;50916:58;50799:182;:::o;50987:228::-;51127:34;51123:1;51115:6;51111:14;51104:58;51196:11;51191:2;51183:6;51179:15;51172:36;50987:228;:::o;51221:::-;51361:34;51357:1;51349:6;51345:14;51338:58;51430:11;51425:2;51417:6;51413:15;51406:36;51221:228;:::o;51455:227::-;51595:34;51591:1;51583:6;51579:14;51572:58;51664:10;51659:2;51651:6;51647:15;51640:35;51455:227;:::o;51688:220::-;51828:34;51824:1;51816:6;51812:14;51805:58;51897:3;51892:2;51884:6;51880:15;51873:28;51688:220;:::o;51914:711::-;51953:3;51991:4;51973:16;51970:26;51967:39;;;51999:5;;51967:39;52028:20;;:::i;:::-;52103:1;52085:16;52081:24;52078:1;52072:4;52057:49;52136:4;52130:11;52235:16;52228:4;52220:6;52216:17;52213:39;52180:18;52172:6;52169:30;52153:113;52150:146;;;52281:5;;;;52150:146;52327:6;52321:4;52317:17;52363:3;52357:10;52390:18;52382:6;52379:30;52376:43;;;52412:5;;;;;;52376:43;52460:6;52453:4;52448:3;52444:14;52440:27;52519:1;52501:16;52497:24;52491:4;52487:35;52482:3;52479:44;52476:57;;;52526:5;;;;;;;52476:57;52543;52591:6;52585:4;52581:17;52573:6;52569:30;52563:4;52543:57;:::i;:::-;52616:3;52609:10;;51957:668;;;;;51914:711;;:::o;52631:122::-;52704:24;52722:5;52704:24;:::i;:::-;52697:5;52694:35;52684:63;;52743:1;52740;52733:12;52684:63;52631:122;:::o;52759:116::-;52829:21;52844:5;52829:21;:::i;:::-;52822:5;52819:32;52809:60;;52865:1;52862;52855:12;52809:60;52759:116;:::o;52881:122::-;52954:24;52972:5;52954:24;:::i;:::-;52947:5;52944:35;52934:63;;52993:1;52990;52983:12;52934:63;52881:122;:::o;53009:120::-;53081:23;53098:5;53081:23;:::i;:::-;53074:5;53071:34;53061:62;;53119:1;53116;53109:12;53061:62;53009:120;:::o;53135:122::-;53208:24;53226:5;53208:24;:::i;:::-;53201:5;53198:35;53188:63;;53247:1;53244;53237:12;53188:63;53135:122;:::o;53263:120::-;53335:23;53352:5;53335:23;:::i;:::-;53328:5;53325:34;53315:62;;53373:1;53370;53363:12;53315:62;53263:120;:::o;53389:118::-;53460:22;53476:5;53460:22;:::i;:::-;53453:5;53450:33;53440:61;;53497:1;53494;53487:12;53440:61;53389:118;:::o
Swarm Source
ipfs://3c94850f8681a1d467b91d96107926ecfca3fe879fc54ec2c0330f7e35b0db30
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.