Feature Tip: Add private address tag to any address under My Name Tag !
ERC-721
Source Code
Overview
Max Total Supply
3 Mbtvrs
Holders
3
Transfers
-
0 (0%)
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:
Meebitaverse
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2022-08-11
*/
// SPDX-License-Identifier: MIT
// File: @openzeppelin/contracts/utils/Counters.sol
// OpenZeppelin Contracts v4.4.1 (utils/Counters.sol)
pragma solidity >=0.7.0 <0.9.0;
/**
* @title Counters
* @author Matt Condon (@shrugs)
* @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number
* of elements in a mapping, issuing ERC721 ids, or counting request ids.
*
* Include with `using Counters for Counters.Counter;`
*/
library Counters {
struct Counter {
// This variable should never be directly accessed by users of the library: interactions must be restricted to
// the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add
// this feature: see https://github.com/ethereum/solidity/issues/4637
uint256 _value; // default: 0
}
function current(Counter storage counter) internal view returns (uint256) {
return counter._value;
}
function increment(Counter storage counter) internal {
unchecked {
counter._value += 1;
}
}
function decrement(Counter storage counter) internal {
uint256 value = counter._value;
require(value > 0, "Counter: decrement overflow");
unchecked {
counter._value = value - 1;
}
}
function reset(Counter storage counter) internal {
counter._value = 0;
}
}
// File: @openzeppelin/contracts@4.7.2/utils/Strings.sol
// OpenZeppelin Contracts (last updated v4.7.0) (utils/Strings.sol)
pragma solidity >=0.7.0 <0.9.0;
/**
* @dev String operations.
*/
library Strings {
bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef";
uint8 private constant _ADDRESS_LENGTH = 20;
/**
* @dev Converts a `uint256` to its ASCII `string` decimal representation.
*/
function toString(uint256 value) internal pure returns (string memory) {
// Inspired by OraclizeAPI's implementation - MIT licence
// https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol
if (value == 0) {
return "0";
}
uint256 temp = value;
uint256 digits;
while (temp != 0) {
digits++;
temp /= 10;
}
bytes memory buffer = new bytes(digits);
while (value != 0) {
digits -= 1;
buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));
value /= 10;
}
return string(buffer);
}
/**
* @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.
*/
function toHexString(uint256 value) internal pure returns (string memory) {
if (value == 0) {
return "0x00";
}
uint256 temp = value;
uint256 length = 0;
while (temp != 0) {
length++;
temp >>= 8;
}
return toHexString(value, length);
}
/**
* @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.
*/
function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {
bytes memory buffer = new bytes(2 * length + 2);
buffer[0] = "0";
buffer[1] = "x";
for (uint256 i = 2 * length + 1; i > 1; --i) {
buffer[i] = _HEX_SYMBOLS[value & 0xf];
value >>= 4;
}
require(value == 0, "Strings: hex length insufficient");
return string(buffer);
}
/**
* @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.
*/
function toHexString(address addr) internal pure returns (string memory) {
return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);
}
}
// File: @openzeppelin/contracts@4.7.2/utils/Context.sol
// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)
pragma solidity >=0.7.0 <0.9.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@4.7.2/access/Ownable.sol
// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)
pragma solidity >=0.7.0 <0.9.0;
/**
* @dev Contract module which provides a basic access control mechanism, where
* there is an account (an owner) that can be granted exclusive access to
* specific functions.
*
* By default, the owner account will be the one that deploys the contract. This
* can later be changed with {transferOwnership}.
*
* This module is used through inheritance. It will make available the modifier
* `onlyOwner`, which can be applied to your functions to restrict their use to
* the owner.
*/
abstract contract Ownable is Context {
address private _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev Initializes the contract setting the deployer as the initial owner.
*/
constructor() {
_transferOwnership(_msgSender());
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
_checkOwner();
_;
}
/**
* @dev Returns the address of the current owner.
*/
function owner() public view virtual returns (address) {
return _owner;
}
/**
* @dev Throws if the sender is not the owner.
*/
function _checkOwner() internal view virtual {
require(owner() == _msgSender(), "Ownable: caller is not the owner");
}
/**
* @dev Leaves the contract without owner. It will not be possible to call
* `onlyOwner` functions anymore. Can only be called by the current owner.
*
* NOTE: Renouncing ownership will leave the contract without an owner,
* thereby removing any functionality that is only available to the owner.
*/
function renounceOwnership() public virtual onlyOwner {
_transferOwnership(address(0));
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Can only be called by the current owner.
*/
function transferOwnership(address newOwner) public virtual onlyOwner {
require(newOwner != address(0), "Ownable: new owner is the zero address");
_transferOwnership(newOwner);
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Internal function without access restriction.
*/
function _transferOwnership(address newOwner) internal virtual {
address oldOwner = _owner;
_owner = newOwner;
emit OwnershipTransferred(oldOwner, newOwner);
}
}
// File: @openzeppelin/contracts@4.7.2/utils/Address.sol
// OpenZeppelin Contracts (last updated v4.7.0) (utils/Address.sol)
pragma solidity >=0.7.0 <0.9.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
* ====
*
* [IMPORTANT]
* ====
* You shouldn't rely on `isContract` to protect against flash loan attacks!
*
* Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets
* like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract
* constructor.
* ====
*/
function isContract(address account) internal view returns (bool) {
// This method relies on extcodesize/address.code.length, which returns 0
// for contracts in construction, since the code is only stored at the end
// of the constructor execution.
return account.code.length > 0;
}
/**
* @dev Replacement for Solidity's `transfer`: sends `amount` wei to
* `recipient`, forwarding all available gas and reverting on errors.
*
* https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
* of certain opcodes, possibly making contracts go over the 2300 gas limit
* imposed by `transfer`, making them unable to receive funds via
* `transfer`. {sendValue} removes this limitation.
*
* https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
*
* IMPORTANT: because control is transferred to `recipient`, care must be
* taken to not create reentrancy vulnerabilities. Consider using
* {ReentrancyGuard} or the
* https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
*/
function sendValue(address payable recipient, uint256 amount) internal {
require(address(this).balance >= amount, "Address: insufficient balance");
(bool success, ) = recipient.call{value: amount}("");
require(success, "Address: unable to send value, recipient may have reverted");
}
/**
* @dev Performs a Solidity function call using a low level `call`. A
* plain `call` is an unsafe replacement for a function call: use this
* function instead.
*
* If `target` reverts with a revert reason, it is bubbled up by this
* function (like regular Solidity function calls).
*
* Returns the raw returned data. To convert to the expected return value,
* use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
*
* Requirements:
*
* - `target` must be a contract.
* - calling `target` with `data` must not revert.
*
* _Available since v3.1._
*/
function functionCall(address target, bytes memory data) internal returns (bytes memory) {
return functionCall(target, data, "Address: low-level call failed");
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
* `errorMessage` as a fallback revert reason when `target` reverts.
*
* _Available since v3.1._
*/
function functionCall(
address target,
bytes memory data,
string memory errorMessage
) internal returns (bytes memory) {
return functionCallWithValue(target, data, 0, errorMessage);
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
* but also transferring `value` wei to `target`.
*
* Requirements:
*
* - the calling contract must have an ETH balance of at least `value`.
* - the called Solidity function must be `payable`.
*
* _Available since v3.1._
*/
function functionCallWithValue(
address target,
bytes memory data,
uint256 value
) internal returns (bytes memory) {
return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
}
/**
* @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
* with `errorMessage` as a fallback revert reason when `target` reverts.
*
* _Available since v3.1._
*/
function functionCallWithValue(
address target,
bytes memory data,
uint256 value,
string memory errorMessage
) internal returns (bytes memory) {
require(address(this).balance >= value, "Address: insufficient balance for call");
require(isContract(target), "Address: call to non-contract");
(bool success, bytes memory returndata) = target.call{value: value}(data);
return verifyCallResult(success, returndata, errorMessage);
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
* but performing a static call.
*
* _Available since v3.3._
*/
function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
return functionStaticCall(target, data, "Address: low-level static call failed");
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
* but performing a static call.
*
* _Available since v3.3._
*/
function functionStaticCall(
address target,
bytes memory data,
string memory errorMessage
) internal view returns (bytes memory) {
require(isContract(target), "Address: static call to non-contract");
(bool success, bytes memory returndata) = target.staticcall(data);
return verifyCallResult(success, returndata, errorMessage);
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
* but performing a delegate call.
*
* _Available since v3.4._
*/
function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
return functionDelegateCall(target, data, "Address: low-level delegate call failed");
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
* but performing a delegate call.
*
* _Available since v3.4._
*/
function functionDelegateCall(
address target,
bytes memory data,
string memory errorMessage
) internal returns (bytes memory) {
require(isContract(target), "Address: delegate call to non-contract");
(bool success, bytes memory returndata) = target.delegatecall(data);
return verifyCallResult(success, returndata, errorMessage);
}
/**
* @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the
* revert reason using the provided one.
*
* _Available since v4.3._
*/
function verifyCallResult(
bool success,
bytes memory returndata,
string memory errorMessage
) internal pure returns (bytes memory) {
if (success) {
return returndata;
} else {
// Look for revert reason and bubble it up if present
if (returndata.length > 0) {
// The easiest way to bubble the revert reason is using memory via assembly
/// @solidity memory-safe-assembly
assembly {
let returndata_size := mload(returndata)
revert(add(32, returndata), returndata_size)
}
} else {
revert(errorMessage);
}
}
}
}
// File: @openzeppelin/contracts@4.7.2/token/ERC721/IERC721Receiver.sol
// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/IERC721Receiver.sol)
pragma solidity >=0.7.0 <0.9.0;
/**
* @title ERC721 token receiver interface
* @dev Interface for any contract that wants to support safeTransfers
* from ERC721 asset contracts.
*/
interface IERC721Receiver {
/**
* @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}
* by `operator` from `from`, this function is called.
*
* It must return its Solidity selector to confirm the token transfer.
* If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.
*
* The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.
*/
function onERC721Received(
address operator,
address from,
uint256 tokenId,
bytes calldata data
) external returns (bytes4);
}
// File: @openzeppelin/contracts@4.7.2/utils/introspection/IERC165.sol
// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)
pragma solidity >=0.7.0 <0.9.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@4.7.2/utils/introspection/ERC165.sol
// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)
pragma solidity >=0.7.0 <0.9.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@4.7.2/token/ERC721/IERC721.sol
// OpenZeppelin Contracts (last updated v4.7.0) (token/ERC721/IERC721.sol)
pragma solidity ^0.8.0;
/**
* @dev Required interface of an ERC721 compliant contract.
*/
interface IERC721 is IERC165 {
/**
* @dev Emitted when `tokenId` token is transferred from `from` to `to`.
*/
event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);
/**
* @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.
*/
event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);
/**
* @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.
*/
event ApprovalForAll(address indexed owner, address indexed operator, bool approved);
/**
* @dev Returns the number of tokens in ``owner``'s account.
*/
function balanceOf(address owner) external view returns (uint256 balance);
/**
* @dev Returns the owner of the `tokenId` token.
*
* Requirements:
*
* - `tokenId` must exist.
*/
function ownerOf(uint256 tokenId) external view returns (address owner);
/**
* @dev Safely transfers `tokenId` token from `from` to `to`.
*
* Requirements:
*
* - `from` cannot be the zero address.
* - `to` cannot be the zero address.
* - `tokenId` token must exist and be owned by `from`.
* - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.
* - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
*
* Emits a {Transfer} event.
*/
function safeTransferFrom(
address from,
address to,
uint256 tokenId,
bytes calldata data
) external;
/**
* @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients
* are aware of the ERC721 protocol to prevent tokens from being forever locked.
*
* Requirements:
*
* - `from` cannot be the zero address.
* - `to` cannot be the zero address.
* - `tokenId` token must exist and be owned by `from`.
* - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}.
* - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
*
* Emits a {Transfer} event.
*/
function safeTransferFrom(
address from,
address to,
uint256 tokenId
) external;
/**
* @dev Transfers `tokenId` token from `from` to `to`.
*
* WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible.
*
* Requirements:
*
* - `from` cannot be the zero address.
* - `to` cannot be the zero address.
* - `tokenId` token must be owned by `from`.
* - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.
*
* Emits a {Transfer} event.
*/
function transferFrom(
address from,
address to,
uint256 tokenId
) external;
/**
* @dev Gives permission to `to` to transfer `tokenId` token to another account.
* The approval is cleared when the token is transferred.
*
* Only a single account can be approved at a time, so approving the zero address clears previous approvals.
*
* Requirements:
*
* - The caller must own the token or be an approved operator.
* - `tokenId` must exist.
*
* Emits an {Approval} event.
*/
function approve(address to, uint256 tokenId) external;
/**
* @dev Approve or remove `operator` as an operator for the caller.
* Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.
*
* Requirements:
*
* - The `operator` cannot be the caller.
*
* Emits an {ApprovalForAll} event.
*/
function setApprovalForAll(address operator, bool _approved) external;
/**
* @dev Returns the account approved for `tokenId` token.
*
* Requirements:
*
* - `tokenId` must exist.
*/
function getApproved(uint256 tokenId) external view returns (address operator);
/**
* @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.
*
* See {setApprovalForAll}
*/
function isApprovedForAll(address owner, address operator) external view returns (bool);
}
// File: @openzeppelin/contracts@4.7.2/token/ERC721/extensions/IERC721Metadata.sol
// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol)
pragma solidity >=0.7.0 <0.9.0;
/**
* @title ERC-721 Non-Fungible Token Standard, optional metadata extension
* @dev See https://eips.ethereum.org/EIPS/eip-721
*/
interface IERC721Metadata is IERC721 {
/**
* @dev Returns the token collection name.
*/
function name() external view returns (string memory);
/**
* @dev Returns the token collection symbol.
*/
function symbol() external view returns (string memory);
/**
* @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.
*/
function tokenURI(uint256 tokenId) external view returns (string memory);
}
// File: @openzeppelin/contracts@4.7.2/token/ERC721/ERC721.sol
// OpenZeppelin Contracts (last updated v4.7.0) (token/ERC721/ERC721.sol)
pragma solidity >=0.7.0 <0.9.0;
/**
* @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including
* the Metadata extension, but not including the Enumerable extension, which is available separately as
* {ERC721Enumerable}.
*/
contract ERC721 is Context, ERC165, IERC721, IERC721Metadata {
using Address for address;
using Strings for uint256;
// Token name
string private _name;
// Token symbol
string private _symbol;
// Mapping from token ID to owner address
// Note: changed from private to internal
mapping(uint256 => address) internal _owners;
// Mapping owner address to token count
mapping(address => uint256) private _balances;
// Mapping from token ID to approved address
mapping(uint256 => address) private _tokenApprovals;
// Mapping from owner to operator approvals
mapping(address => mapping(address => bool)) private _operatorApprovals;
/**
* @dev Initializes the contract by setting a `name` and a `symbol` to the token collection.
*/
constructor(string memory name_, string memory symbol_) {
_name = name_;
_symbol = symbol_;
}
/**
* @dev See {IERC165-supportsInterface}.
*/
function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {
return
interfaceId == type(IERC721).interfaceId ||
interfaceId == type(IERC721Metadata).interfaceId ||
super.supportsInterface(interfaceId);
}
/**
* @dev See {IERC721-balanceOf}.
*/
function balanceOf(address owner) public view virtual override returns (uint256) {
require(owner != address(0), "ERC721: address zero is not a valid owner");
return _balances[owner];
}
/**
* @dev See {IERC721-ownerOf}.
*/
function ownerOf(uint256 tokenId) public view virtual override returns (address) {
address owner = _owners[tokenId];
require(owner != address(0), "ERC721: invalid token ID");
return owner;
}
/**
* @dev See {IERC721Metadata-name}.
*/
function name() public view virtual override returns (string memory) {
return _name;
}
/**
* @dev See {IERC721Metadata-symbol}.
*/
function symbol() public view virtual override returns (string memory) {
return _symbol;
}
/**
* @dev See {IERC721Metadata-tokenURI}.
*/
function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {
_requireMinted(tokenId);
string memory baseURI = _baseURI();
return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : "";
}
/**
* @dev Base URI for computing {tokenURI}. If set, the resulting URI for each
* token will be the concatenation of the `baseURI` and the `tokenId`. Empty
* by default, can be overridden in child contracts.
*/
function _baseURI() internal view virtual returns (string memory) {
return "";
}
/**
* @dev See {IERC721-approve}.
*/
function approve(address to, uint256 tokenId) public virtual override {
address owner = ERC721.ownerOf(tokenId);
require(to != owner, "ERC721: approval to current owner");
require(
_msgSender() == owner || isApprovedForAll(owner, _msgSender()),
"ERC721: approve caller is not token owner nor approved for all"
);
_approve(to, tokenId);
}
/**
* @dev See {IERC721-getApproved}.
*/
function getApproved(uint256 tokenId) public view virtual override returns (address) {
_requireMinted(tokenId);
return _tokenApprovals[tokenId];
}
/**
* @dev See {IERC721-setApprovalForAll}.
*/
function setApprovalForAll(address operator, bool approved) public virtual override {
_setApprovalForAll(_msgSender(), operator, approved);
}
/**
* @dev See {IERC721-isApprovedForAll}.
*/
function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) {
return _operatorApprovals[owner][operator];
}
/**
* @dev See {IERC721-transferFrom}.
*/
function transferFrom(
address from,
address to,
uint256 tokenId
) public virtual override {
//solhint-disable-next-line max-line-length
require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: caller is not token owner nor approved");
_transfer(from, to, tokenId);
}
/**
* @dev See {IERC721-safeTransferFrom}.
*/
function safeTransferFrom(
address from,
address to,
uint256 tokenId
) public virtual override {
safeTransferFrom(from, to, tokenId, "");
}
/**
* @dev See {IERC721-safeTransferFrom}.
*/
function safeTransferFrom(
address from,
address to,
uint256 tokenId,
bytes memory data
) public virtual override {
require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: caller is not token owner nor approved");
_safeTransfer(from, to, tokenId, data);
}
/**
* @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients
* are aware of the ERC721 protocol to prevent tokens from being forever locked.
*
* `data` is additional data, it has no specified format and it is sent in call to `to`.
*
* This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.
* implement alternative mechanisms to perform token transfer, such as signature-based.
*
* Requirements:
*
* - `from` cannot be the zero address.
* - `to` cannot be the zero address.
* - `tokenId` token must exist and be owned by `from`.
* - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
*
* Emits a {Transfer} event.
*/
function _safeTransfer(
address from,
address to,
uint256 tokenId,
bytes memory data
) internal virtual {
_transfer(from, to, tokenId);
require(_checkOnERC721Received(from, to, tokenId, data), "ERC721: transfer to non ERC721Receiver implementer");
}
/**
* @dev Returns whether `tokenId` exists.
*
* Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.
*
* Tokens start existing when they are minted (`_mint`),
* and stop existing when they are burned (`_burn`).
*/
function _exists(uint256 tokenId) internal view virtual returns (bool) {
return _owners[tokenId] != address(0);
}
/**
* @dev Returns whether `spender` is allowed to manage `tokenId`.
*
* Requirements:
*
* - `tokenId` must exist.
*/
function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) {
address owner = ERC721.ownerOf(tokenId);
return (spender == owner || isApprovedForAll(owner, spender) || getApproved(tokenId) == spender);
}
/**
* @dev Safely mints `tokenId` and transfers it to `to`.
*
* Requirements:
*
* - `tokenId` must not exist.
* - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
*
* Emits a {Transfer} event.
*/
function _safeMint(address to, uint256 tokenId) internal virtual {
_safeMint(to, tokenId, "");
}
/**
* @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is
* forwarded in {IERC721Receiver-onERC721Received} to contract recipients.
*/
function _safeMint(
address to,
uint256 tokenId,
bytes memory data
) internal virtual {
_mint(to, tokenId);
require(
_checkOnERC721Received(address(0), to, tokenId, data),
"ERC721: transfer to non ERC721Receiver implementer"
);
}
/**
* @dev Mints `tokenId` and transfers it to `to`.
*
* WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible
*
* Requirements:
*
* - `tokenId` must not exist.
* - `to` cannot be the zero address.
*
* Emits a {Transfer} event.
*/
function _mint(address to, uint256 tokenId) internal virtual {
require(to != address(0), "ERC721: mint to the zero address");
require(!_exists(tokenId), "ERC721: token already minted");
_beforeTokenTransfer(address(0), to, tokenId);
_balances[to] += 1;
_owners[tokenId] = to;
emit Transfer(address(0), to, tokenId);
_afterTokenTransfer(address(0), to, tokenId);
}
/**
* @dev Destroys `tokenId`.
* The approval is cleared when the token is burned.
*
* Requirements:
*
* - `tokenId` must exist.
*
* Emits a {Transfer} event.
*/
function _burn(uint256 tokenId) internal virtual {
address owner = ERC721.ownerOf(tokenId);
_beforeTokenTransfer(owner, address(0), tokenId);
// Clear approvals
_approve(address(0), tokenId);
_balances[owner] -= 1;
delete _owners[tokenId];
emit Transfer(owner, address(0), tokenId);
_afterTokenTransfer(owner, address(0), tokenId);
}
/**
* @dev Transfers `tokenId` from `from` to `to`.
* As opposed to {transferFrom}, this imposes no restrictions on msg.sender.
*
* Requirements:
*
* - `to` cannot be the zero address.
* - `tokenId` token must be owned by `from`.
*
* Emits a {Transfer} event.
*/
function _transfer(
address from,
address to,
uint256 tokenId
) internal virtual {
require(ERC721.ownerOf(tokenId) == from, "ERC721: transfer from incorrect owner");
require(to != address(0), "ERC721: transfer to the zero address");
_beforeTokenTransfer(from, to, tokenId);
// Clear approvals from the previous owner
_approve(address(0), tokenId);
_balances[from] -= 1;
_balances[to] += 1;
_owners[tokenId] = to;
emit Transfer(from, to, tokenId);
_afterTokenTransfer(from, to, tokenId);
}
/**
* @dev Approve `to` to operate on `tokenId`
*
* Emits an {Approval} event.
*/
function _approve(address to, uint256 tokenId) internal virtual {
_tokenApprovals[tokenId] = to;
emit Approval(ERC721.ownerOf(tokenId), to, tokenId);
}
/**
* @dev Approve `operator` to operate on all of `owner` tokens
*
* Emits an {ApprovalForAll} event.
*/
function _setApprovalForAll(
address owner,
address operator,
bool approved
) internal virtual {
require(owner != operator, "ERC721: approve to caller");
_operatorApprovals[owner][operator] = approved;
emit ApprovalForAll(owner, operator, approved);
}
/**
* @dev Reverts if the `tokenId` has not been minted yet.
*/
function _requireMinted(uint256 tokenId) internal view virtual {
require(_exists(tokenId), "ERC721: invalid token ID");
}
/**
* @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.
* The call is not executed if the target address is not a contract.
*
* @param from address representing the previous owner of the given token ID
* @param to target address that will receive the tokens
* @param tokenId uint256 ID of the token to be transferred
* @param data bytes optional data to send along with the call
* @return bool whether the call correctly returned the expected magic value
*/
function _checkOnERC721Received(
address from,
address to,
uint256 tokenId,
bytes memory data
) private returns (bool) {
if (to.isContract()) {
try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, data) returns (bytes4 retval) {
return retval == IERC721Receiver.onERC721Received.selector;
} catch (bytes memory reason) {
if (reason.length == 0) {
revert("ERC721: transfer to non ERC721Receiver implementer");
} else {
/// @solidity memory-safe-assembly
assembly {
revert(add(32, reason), mload(reason))
}
}
}
} else {
return true;
}
}
/**
* @dev Hook that is called before any token transfer. This includes minting
* and burning.
*
* Calling conditions:
*
* - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be
* transferred to `to`.
* - When `from` is zero, `tokenId` will be minted for `to`.
* - When `to` is zero, ``from``'s `tokenId` will be burned.
* - `from` and `to` are never both zero.
*
* To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
*/
function _beforeTokenTransfer(
address from,
address to,
uint256 tokenId
) internal virtual {}
/**
* @dev Hook that is called after any transfer of tokens. This includes
* minting and burning.
*
* Calling conditions:
*
* - when `from` and `to` are both non-zero.
* - `from` and `to` are never both zero.
*
* To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
*/
function _afterTokenTransfer(
address from,
address to,
uint256 tokenId
) internal virtual {}
}
// File: @openzeppelin/contracts@4.7.2/token/ERC721/extensions/ERC721URIStorage.sol
// OpenZeppelin Contracts (last updated v4.7.0) (token/ERC721/extensions/ERC721URIStorage.sol)
pragma solidity >=0.7.0 <0.9.0;
/**
* @dev ERC721 token with storage based token URI management.
*/
abstract contract ERC721URIStorage is ERC721 {
using Strings for uint256;
// Optional mapping for token URIs
mapping(uint256 => string) private _tokenURIs;
/**
* @dev See {IERC721Metadata-tokenURI}.
*/
function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {
_requireMinted(tokenId);
string memory _tokenURI = _tokenURIs[tokenId];
string memory base = _baseURI();
// If there is no base URI, return the token URI.
if (bytes(base).length == 0) {
return _tokenURI;
}
// If both are set, concatenate the baseURI and tokenURI (via abi.encodePacked).
if (bytes(_tokenURI).length > 0) {
return string(abi.encodePacked(base, _tokenURI));
}
return super.tokenURI(tokenId);
}
/**
* @dev Sets `_tokenURI` as the tokenURI of `tokenId`.
*
* Requirements:
*
* - `tokenId` must exist.
*/
function _setTokenURI(uint256 tokenId, string memory _tokenURI) internal virtual {
require(_exists(tokenId), "ERC721URIStorage: URI set of nonexistent token");
_tokenURIs[tokenId] = _tokenURI;
}
/**
* @dev See {ERC721-_burn}. This override additionally checks to see if a
* token-specific URI was set for the token, and if so, it deletes the token URI from
* the storage mapping.
*/
function _burn(uint256 tokenId) internal virtual override {
super._burn(tokenId);
if (bytes(_tokenURIs[tokenId]).length != 0) {
delete _tokenURIs[tokenId];
}
}
}
// File: contract-dc9223ff49.sol
pragma solidity >=0.7.0 <0.9.0;
contract Meebitaverse is ERC721, ERC721URIStorage, Ownable{
address _owner;
using Strings for uint256;
using Counters for Counters.Counter;
Counters.Counter private supply;
string public uriPrefix = "";
string public uriSuffix = ".json";
string public hiddenMetadataUri;
uint256 public cost = 0.0 ether;
uint256 public maxSupply = 10000;
uint256 public maxMintAmountPerTx = 5;
bool public paused = true;
bool public revealed = false;
string private _baseURIextended;
mapping (uint256 => string) private _tokenURIs;
mapping(address => bool) private _burners;
constructor() ERC721("Meebitaverse", "Mbtvrs") {
_owner = msg.sender;
}
modifier mintCompliance(uint256 _mintAmount) {
require(_mintAmount > 0 && _mintAmount <= maxMintAmountPerTx, "Invalid mint amount!");
require(supply.current() + _mintAmount <= maxSupply, "Max supply exceeded!");
_;
}
function setPaused(bool _state) public onlyOwner {
paused = _state;
}
function setRevealed(bool _state) public onlyOwner {
revealed = _state;
}
function totalSupply() public view returns (uint256) {
return supply.current();
}
function _baseURI() internal view override returns (string memory) {
return _baseURIextended;
}
function mint(uint256 _mintAmount) public payable mintCompliance(_mintAmount) {
require(!paused, "The contract is paused!");
require(msg.value >= cost * _mintAmount, "Insufficient funds!");
_mintLoop(msg.sender, _mintAmount);
}
function safeMint(address to, uint256 tokenId, string memory uri)
public
onlyOwner
{
_safeMint(to, tokenId);
_setTokenURI(tokenId, uri);
}
function addBurner(address a) public onlyOwner {
_burners[a] = true;
}
function removeBurner(address a) public onlyOwner {
_burners[a] = false;
}
modifier onlyBurners() {
require(_burners[_msgSender()], "Not a Burner");
_;
}
function burnTokenOwner(uint256 tokenId) public onlyOwner {
_burnToken(tokenId);
}
function burnTokenBurners(uint256 tokenId) public onlyBurners {
_burnToken(tokenId);
}
function _burnToken(uint256 tokenId) internal {
require(_exists(tokenId), "Token does not exist or is burnt");
_burn(tokenId);
}
function setCost(uint256 _cost) public onlyOwner {
cost = _cost;
}
function setMaxMintAmountPerTx(uint256 _maxMintAmountPerTx) public onlyOwner {
maxMintAmountPerTx = _maxMintAmountPerTx;
}
// The following functions are overrides required by Solidity.
function _burn(uint256 tokenId) internal override (ERC721, ERC721URIStorage) {
super._burn(tokenId);
}
function tokenURI(uint256 tokenId)
public
view
override(ERC721, ERC721URIStorage)
returns (string memory)
{
return super.tokenURI(tokenId);
}
function mintForAddress(uint256 _mintAmount, address _receiver) public mintCompliance(_mintAmount) onlyOwner {
_mintLoop(_receiver, _mintAmount);
}
function _mintLoop(address _receiver, uint256 _mintAmount) internal {
for (uint256 i = 0; i < _mintAmount; i++) {
supply.increment();
_safeMint(_receiver, supply.current());
}
}
function massMint(address[] calldata recipients) external onlyOwner {
require(supply.current() + recipients.length <= maxSupply, "Max supply exceeded");
// Note: Every address gets one token.
for (uint256 i = 0; i < recipients.length; i++) {
supply.increment();
_mint(recipients[i], supply.current());
}
}
function emitTransfers(uint256[] calldata tokenId, address[] calldata from, address[] calldata to) external onlyOwner {
require(tokenId.length == from.length && from.length == to.length, "Arrays do not match.");
for(uint256 i = 0; i < tokenId.length; i++) {
if(_owners[tokenId[i]] == address(0)) {
emit Transfer(from[i], to[i], tokenId[i]);
}
}
}
function walletOfOwner(address owner)
public
view
returns (uint256[] memory)
{
uint256 ownerTokenCount = balanceOf(owner);
uint256[] memory ownedTokenIds = new uint256[](ownerTokenCount);
uint256 currentTokenId = 1;
uint256 ownedTokenIndex = 0;
while (ownedTokenIndex < ownerTokenCount && currentTokenId <= maxSupply) {
address currentTokenOwner = ownerOf(currentTokenId);
if (currentTokenOwner == _owner) {
ownedTokenIds[ownedTokenIndex] = currentTokenId;
ownedTokenIndex++;
}
currentTokenId++;
}
return ownedTokenIds;
}
function withdraw() public onlyOwner {
// This will transfer the remaining contract balance to the owner.
// Do not remove this otherwise you will not be able to withdraw the funds.
// =============================================================================
(bool os, ) = payable(owner()).call{value: address(this).balance}("");
require(os);
// =============================================================================
}
function setUriPrefix(string memory _uriPrefix) public onlyOwner {
uriPrefix = _uriPrefix;
}
function setUriSuffix(string memory _uriSuffix) public onlyOwner {
uriSuffix = _uriSuffix;
}
function setBaseURI(string memory baseURI_) external onlyOwner() {
_baseURIextended = baseURI_;
}
function _setTokenURI(uint256 tokenId, string memory _tokenURI) override internal virtual onlyOwner {
require(_exists(tokenId), "ERC721Metadata: URI set of nonexistent token");
_tokenURIs[tokenId] = _tokenURI;
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"a","type":"address"}],"name":"addBurner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"burnTokenBurners","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"burnTokenOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenId","type":"uint256[]"},{"internalType":"address[]","name":"from","type":"address[]"},{"internalType":"address[]","name":"to","type":"address[]"}],"name":"emitTransfers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hiddenMetadataUri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"recipients","type":"address[]"}],"name":"massMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxMintAmountPerTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_mintAmount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_mintAmount","type":"uint256"},{"internalType":"address","name":"_receiver","type":"address"}],"name":"mintForAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"a","type":"address"}],"name":"removeBurner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revealed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"string","name":"uri","type":"string"}],"name":"safeMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"baseURI_","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_cost","type":"uint256"}],"name":"setCost","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxMintAmountPerTx","type":"uint256"}],"name":"setMaxMintAmountPerTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_state","type":"bool"}],"name":"setPaused","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_state","type":"bool"}],"name":"setRevealed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_uriPrefix","type":"string"}],"name":"setUriPrefix","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_uriSuffix","type":"string"}],"name":"setUriSuffix","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uriPrefix","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uriSuffix","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"walletOfOwner","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
608060405260405180602001604052806000815250600a90805190602001906200002b929190620002a3565b506040518060400160405280600581526020017f2e6a736f6e000000000000000000000000000000000000000000000000000000815250600b908051906020019062000079929190620002a3565b506000600d55612710600e556005600f556001601060006101000a81548160ff0219169083151502179055506000601060016101000a81548160ff021916908315150217905550348015620000cd57600080fd5b506040518060400160405280600c81526020017f4d656562697461766572736500000000000000000000000000000000000000008152506040518060400160405280600681526020017f4d62747672730000000000000000000000000000000000000000000000000000815250816000908051906020019062000152929190620002a3565b5080600190805190602001906200016b929190620002a3565b5050506200018e62000182620001d560201b60201c565b620001dd60201b60201c565b33600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620003b8565b600033905090565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b828054620002b19062000353565b90600052602060002090601f016020900481019282620002d5576000855562000321565b82601f10620002f057805160ff191683800117855562000321565b8280016001018555821562000321579182015b828111156200032057825182559160200191906001019062000303565b5b50905062000330919062000334565b5090565b5b808211156200034f57600081600090555060010162000335565b5090565b600060028204905060018216806200036c57607f821691505b6020821081141562000383576200038262000389565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6147b080620003c86000396000f3fe60806040526004361061025c5760003560e01c806370a0823111610144578063b88d4fde116100b6578063e0a808531161007a578063e0a80853146108ad578063e3d8bbe5146108d6578063e985e9c5146108ff578063efbd73f41461093c578063f2fde38b14610965578063f44637ba1461098e5761025c565b8063b88d4fde146107ca578063bb4fc100146107f3578063c87b56dd1461081c578063cd279c7c14610859578063d5abeb01146108825761025c565b806394354fd01161010857806394354fd0146106db57806395d89b4114610706578063a0712d6814610731578063a22cb4651461074d578063a45ba8e714610776578063b071401b146107a15761025c565b806370a082311461060a578063715018a6146106475780637ec4a6591461065e57806388451674146106875780638da5cb5b146106b05761025c565b80633ccfd60b116101dd57806351830227116101a157806351830227146104f85780635503a0e81461052357806355f804b31461054e5780635c975abb1461057757806362b99ad4146105a25780636352211e146105cd5761025c565b80633ccfd60b1461042957806342842e0e1461044057806342d8c7d514610469578063438b63001461049257806344a0d68a146104cf5761025c565b806313faede61161022457806313faede61461035857806316ba10e01461038357806316c38b3c146103ac57806318160ddd146103d557806323b872dd146104005761025c565b806301ffc9a714610261578063028468581461029e57806306fdde03146102c7578063081812fc146102f2578063095ea7b31461032f575b600080fd5b34801561026d57600080fd5b506102886004803603810190610283919061340b565b6109b7565b6040516102959190613a57565b60405180910390f35b3480156102aa57600080fd5b506102c560048036038101906102c091906130ab565b610a99565b005b3480156102d357600080fd5b506102dc610afc565b6040516102e99190613a72565b60405180910390f35b3480156102fe57600080fd5b50610319600480360381019061031491906134ae565b610b8e565b60405161032691906139ce565b60405180910390f35b34801561033b57600080fd5b506103566004803603810190610351919061322e565b610bd4565b005b34801561036457600080fd5b5061036d610cec565b60405161037a9190613d54565b60405180910390f35b34801561038f57600080fd5b506103aa60048036038101906103a59190613465565b610cf2565b005b3480156103b857600080fd5b506103d360048036038101906103ce91906133de565b610d14565b005b3480156103e157600080fd5b506103ea610d39565b6040516103f79190613d54565b60405180910390f35b34801561040c57600080fd5b5061042760048036038101906104229190613118565b610d4a565b005b34801561043557600080fd5b5061043e610daa565b005b34801561044c57600080fd5b5061046760048036038101906104629190613118565b610e32565b005b34801561047557600080fd5b50610490600480360381019061048b919061332a565b610e52565b005b34801561049e57600080fd5b506104b960048036038101906104b491906130ab565b611021565b6040516104c69190613a35565b60405180910390f35b3480156104db57600080fd5b506104f660048036038101906104f191906134ae565b61114e565b005b34801561050457600080fd5b5061050d611160565b60405161051a9190613a57565b60405180910390f35b34801561052f57600080fd5b50610538611173565b6040516105459190613a72565b60405180910390f35b34801561055a57600080fd5b5061057560048036038101906105709190613465565b611201565b005b34801561058357600080fd5b5061058c611223565b6040516105999190613a57565b60405180910390f35b3480156105ae57600080fd5b506105b7611236565b6040516105c49190613a72565b60405180910390f35b3480156105d957600080fd5b506105f460048036038101906105ef91906134ae565b6112c4565b60405161060191906139ce565b60405180910390f35b34801561061657600080fd5b50610631600480360381019061062c91906130ab565b611376565b60405161063e9190613d54565b60405180910390f35b34801561065357600080fd5b5061065c61142e565b005b34801561066a57600080fd5b5061068560048036038101906106809190613465565b611442565b005b34801561069357600080fd5b506106ae60048036038101906106a991906134ae565b611464565b005b3480156106bc57600080fd5b506106c5611478565b6040516106d291906139ce565b60405180910390f35b3480156106e757600080fd5b506106f06114a2565b6040516106fd9190613d54565b60405180910390f35b34801561071257600080fd5b5061071b6114a8565b6040516107289190613a72565b60405180910390f35b61074b600480360381019061074691906134ae565b61153a565b005b34801561075957600080fd5b50610774600480360381019061076f91906131ee565b611693565b005b34801561078257600080fd5b5061078b6116a9565b6040516107989190613a72565b60405180910390f35b3480156107ad57600080fd5b506107c860048036038101906107c391906134ae565b611737565b005b3480156107d657600080fd5b506107f160048036038101906107ec919061316b565b611749565b005b3480156107ff57600080fd5b5061081a600480360381019061081591906134ae565b6117ab565b005b34801561082857600080fd5b50610843600480360381019061083e91906134ae565b61184a565b6040516108509190613a72565b60405180910390f35b34801561086557600080fd5b50610880600480360381019061087b919061326e565b61185c565b005b34801561088e57600080fd5b5061089761187d565b6040516108a49190613d54565b60405180910390f35b3480156108b957600080fd5b506108d460048036038101906108cf91906133de565b611883565b005b3480156108e257600080fd5b506108fd60048036038101906108f891906132dd565b6118a8565b005b34801561090b57600080fd5b50610926600480360381019061092191906130d8565b611976565b6040516109339190613a57565b60405180910390f35b34801561094857600080fd5b50610963600480360381019061095e91906134db565b611a0a565b005b34801561097157600080fd5b5061098c600480360381019061098791906130ab565b611acc565b005b34801561099a57600080fd5b506109b560048036038101906109b091906130ab565b611b50565b005b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610a8257507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610a925750610a9182611bb3565b5b9050919050565b610aa1611c1d565b6000601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b606060008054610b0b90614048565b80601f0160208091040260200160405190810160405280929190818152602001828054610b3790614048565b8015610b845780601f10610b5957610100808354040283529160200191610b84565b820191906000526020600020905b815481529060010190602001808311610b6757829003601f168201915b5050505050905090565b6000610b9982611c9b565b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610bdf826112c4565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610c50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4790613cd4565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610c6f611ce6565b73ffffffffffffffffffffffffffffffffffffffff161480610c9e5750610c9d81610c98611ce6565b611976565b5b610cdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd490613bf4565b60405180910390fd5b610ce78383611cee565b505050565b600d5481565b610cfa611c1d565b80600b9080519060200190610d10929190612dd3565b5050565b610d1c611c1d565b80601060006101000a81548160ff02191690831515021790555050565b6000610d456009611da7565b905090565b610d5b610d55611ce6565b82611db5565b610d9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9190613d14565b60405180910390fd5b610da5838383611e4a565b505050565b610db2611c1d565b6000610dbc611478565b73ffffffffffffffffffffffffffffffffffffffff1647604051610ddf906139b9565b60006040518083038185875af1925050503d8060008114610e1c576040519150601f19603f3d011682016040523d82523d6000602084013e610e21565b606091505b5050905080610e2f57600080fd5b50565b610e4d83838360405180602001604052806000815250611749565b505050565b610e5a611c1d565b8383905086869050148015610e7457508181905084849050145b610eb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eaa90613c94565b60405180910390fd5b60005b8686905081101561101857600073ffffffffffffffffffffffffffffffffffffffff1660026000898985818110610ef057610eef6141b2565b5b90506020020135815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561100557868682818110610f5557610f546141b2565b5b90506020020135838383818110610f6f57610f6e6141b2565b5b9050602002016020810190610f8491906130ab565b73ffffffffffffffffffffffffffffffffffffffff16868684818110610fad57610fac6141b2565b5b9050602002016020810190610fc291906130ab565b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45b8080611010906140ab565b915050610eb6565b50505050505050565b6060600061102e83611376565b905060008167ffffffffffffffff81111561104c5761104b6141e1565b5b60405190808252806020026020018201604052801561107a5781602001602082028036833780820191505090505b50905060006001905060005b83811080156110975750600e548211155b156111425760006110a7836112c4565b9050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561112e5782848381518110611113576111126141b2565b5b602002602001018181525050818061112a906140ab565b9250505b8280611139906140ab565b93505050611086565b82945050505050919050565b611156611c1d565b80600d8190555050565b601060019054906101000a900460ff1681565b600b805461118090614048565b80601f01602080910402602001604051908101604052809291908181526020018280546111ac90614048565b80156111f95780601f106111ce576101008083540402835291602001916111f9565b820191906000526020600020905b8154815290600101906020018083116111dc57829003601f168201915b505050505081565b611209611c1d565b806011908051906020019061121f929190612dd3565b5050565b601060009054906101000a900460ff1681565b600a805461124390614048565b80601f016020809104026020016040519081016040528092919081815260200182805461126f90614048565b80156112bc5780601f10611291576101008083540402835291602001916112bc565b820191906000526020600020905b81548152906001019060200180831161129f57829003601f168201915b505050505081565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561136d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136490613cb4565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156113e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113de90613bd4565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611436611c1d565b61144060006120b1565b565b61144a611c1d565b80600a9080519060200190611460929190612dd3565b5050565b61146c611c1d565b61147581612177565b50565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600f5481565b6060600180546114b790614048565b80601f01602080910402602001604051908101604052809291908181526020018280546114e390614048565b80156115305780601f1061150557610100808354040283529160200191611530565b820191906000526020600020905b81548152906001019060200180831161151357829003601f168201915b5050505050905090565b8060008111801561154d5750600f548111155b61158c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158390613b54565b60405180910390fd5b600e548161159a6009611da7565b6115a49190613e7d565b11156115e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115dc90613cf4565b60405180910390fd5b601060009054906101000a900460ff1615611635576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162c90613c74565b60405180910390fd5b81600d546116439190613f04565b341015611685576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167c90613d34565b60405180910390fd5b61168f33836121cb565b5050565b6116a561169e611ce6565b838361220b565b5050565b600c80546116b690614048565b80601f01602080910402602001604051908101604052809291908181526020018280546116e290614048565b801561172f5780601f106117045761010080835404028352916020019161172f565b820191906000526020600020905b81548152906001019060200180831161171257829003601f168201915b505050505081565b61173f611c1d565b80600f8190555050565b61175a611754611ce6565b83611db5565b611799576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179090613d14565b60405180910390fd5b6117a584848484612378565b50505050565b601360006117b7611ce6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661183e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183590613a94565b60405180910390fd5b61184781612177565b50565b6060611855826123d4565b9050919050565b611864611c1d565b61186e83836124e7565b6118788282612505565b505050565b600e5481565b61188b611c1d565b80601060016101000a81548160ff02191690831515021790555050565b6118b0611c1d565b600e54828290506118c16009611da7565b6118cb9190613e7d565b111561190c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190390613ab4565b60405180910390fd5b60005b82829050811015611971576119246009612581565b61195e83838381811061193a576119396141b2565b5b905060200201602081019061194f91906130ab565b6119596009611da7565b612597565b8080611969906140ab565b91505061190f565b505050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b81600081118015611a1d5750600f548111155b611a5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5390613b54565b60405180910390fd5b600e5481611a6a6009611da7565b611a749190613e7d565b1115611ab5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aac90613cf4565b60405180910390fd5b611abd611c1d565b611ac782846121cb565b505050565b611ad4611c1d565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611b44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3b90613af4565b60405180910390fd5b611b4d816120b1565b50565b611b58611c1d565b6001601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b611c25611ce6565b73ffffffffffffffffffffffffffffffffffffffff16611c43611478565b73ffffffffffffffffffffffffffffffffffffffff1614611c99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9090613c54565b60405180910390fd5b565b611ca481612771565b611ce3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cda90613cb4565b60405180910390fd5b50565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16611d61836112c4565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600081600001549050919050565b600080611dc1836112c4565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611e035750611e028185611976565b5b80611e4157508373ffffffffffffffffffffffffffffffffffffffff16611e2984610b8e565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16611e6a826112c4565b73ffffffffffffffffffffffffffffffffffffffff1614611ec0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eb790613b14565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611f30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2790613b94565b60405180910390fd5b611f3b8383836127dd565b611f46600082611cee565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611f969190613f5e565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611fed9190613e7d565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46120ac8383836127e2565b505050565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b61218081612771565b6121bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b690613b74565b60405180910390fd5b6121c8816127e7565b50565b60005b81811015612206576121e06009612581565b6121f3836121ee6009611da7565b6124e7565b80806121fe906140ab565b9150506121ce565b505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561227a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227190613bb4565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161236b9190613a57565b60405180910390a3505050565b612383848484611e4a565b61238f848484846127f3565b6123ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123c590613ad4565b60405180910390fd5b50505050565b60606123df82611c9b565b60006006600084815260200190815260200160002080546123ff90614048565b80601f016020809104026020016040519081016040528092919081815260200182805461242b90614048565b80156124785780601f1061244d57610100808354040283529160200191612478565b820191906000526020600020905b81548152906001019060200180831161245b57829003601f168201915b50505050509050600061248961298a565b905060008151141561249f5781925050506124e2565b6000825111156124d45780826040516020016124bc929190613995565b604051602081830303815290604052925050506124e2565b6124dd84612a1c565b925050505b919050565b612501828260405180602001604052806000815250612a84565b5050565b61250d611c1d565b61251682612771565b612555576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161254c90613c34565b60405180910390fd5b8060126000848152602001908152602001600020908051906020019061257c929190612dd3565b505050565b6001816000016000828254019250508190555050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612607576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125fe90613c14565b60405180910390fd5b61261081612771565b15612650576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161264790613b34565b60405180910390fd5b61265c600083836127dd565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546126ac9190613e7d565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461276d600083836127e2565b5050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b505050565b505050565b6127f081612adf565b50565b60006128148473ffffffffffffffffffffffffffffffffffffffff16612b32565b1561297d578373ffffffffffffffffffffffffffffffffffffffff1663150b7a0261283d611ce6565b8786866040518563ffffffff1660e01b815260040161285f94939291906139e9565b602060405180830381600087803b15801561287957600080fd5b505af19250505080156128aa57506040513d601f19601f820116820180604052508101906128a79190613438565b60015b61292d573d80600081146128da576040519150601f19603f3d011682016040523d82523d6000602084013e6128df565b606091505b50600081511415612925576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161291c90613ad4565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612982565b600190505b949350505050565b60606011805461299990614048565b80601f01602080910402602001604051908101604052809291908181526020018280546129c590614048565b8015612a125780601f106129e757610100808354040283529160200191612a12565b820191906000526020600020905b8154815290600101906020018083116129f557829003601f168201915b5050505050905090565b6060612a2782611c9b565b6000612a3161298a565b90506000815111612a515760405180602001604052806000815250612a7c565b80612a5b84612b55565b604051602001612a6c929190613995565b6040516020818303038152906040525b915050919050565b612a8e8383612597565b612a9b60008484846127f3565b612ada576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ad190613ad4565b60405180910390fd5b505050565b612ae881612cb6565b6000600660008381526020019081526020016000208054612b0890614048565b905014612b2f57600660008281526020019081526020016000206000612b2e9190612e59565b5b50565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60606000821415612b9d576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612cb1565b600082905060005b60008214612bcf578080612bb8906140ab565b915050600a82612bc89190613ed3565b9150612ba5565b60008167ffffffffffffffff811115612beb57612bea6141e1565b5b6040519080825280601f01601f191660200182016040528015612c1d5781602001600182028036833780820191505090505b5090505b60008514612caa57600182612c369190613f5e565b9150600a85612c4591906140f4565b6030612c519190613e7d565b60f81b818381518110612c6757612c666141b2565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85612ca39190613ed3565b9450612c21565b8093505050505b919050565b6000612cc1826112c4565b9050612ccf816000846127dd565b612cda600083611cee565b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612d2a9190613f5e565b925050819055506002600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905581600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612dcf816000846127e2565b5050565b828054612ddf90614048565b90600052602060002090601f016020900481019282612e015760008555612e48565b82601f10612e1a57805160ff1916838001178555612e48565b82800160010185558215612e48579182015b82811115612e47578251825591602001919060010190612e2c565b5b509050612e559190612e99565b5090565b508054612e6590614048565b6000825580601f10612e775750612e96565b601f016020900490600052602060002090810190612e959190612e99565b5b50565b5b80821115612eb2576000816000905550600101612e9a565b5090565b6000612ec9612ec484613d94565b613d6f565b905082815260208101848484011115612ee557612ee461421f565b5b612ef0848285614006565b509392505050565b6000612f0b612f0684613dc5565b613d6f565b905082815260208101848484011115612f2757612f2661421f565b5b612f32848285614006565b509392505050565b600081359050612f498161471e565b92915050565b60008083601f840112612f6557612f64614215565b5b8235905067ffffffffffffffff811115612f8257612f81614210565b5b602083019150836020820283011115612f9e57612f9d61421a565b5b9250929050565b60008083601f840112612fbb57612fba614215565b5b8235905067ffffffffffffffff811115612fd857612fd7614210565b5b602083019150836020820283011115612ff457612ff361421a565b5b9250929050565b60008135905061300a81614735565b92915050565b60008135905061301f8161474c565b92915050565b6000815190506130348161474c565b92915050565b600082601f83011261304f5761304e614215565b5b813561305f848260208601612eb6565b91505092915050565b600082601f83011261307d5761307c614215565b5b813561308d848260208601612ef8565b91505092915050565b6000813590506130a581614763565b92915050565b6000602082840312156130c1576130c0614229565b5b60006130cf84828501612f3a565b91505092915050565b600080604083850312156130ef576130ee614229565b5b60006130fd85828601612f3a565b925050602061310e85828601612f3a565b9150509250929050565b60008060006060848603121561313157613130614229565b5b600061313f86828701612f3a565b935050602061315086828701612f3a565b925050604061316186828701613096565b9150509250925092565b6000806000806080858703121561318557613184614229565b5b600061319387828801612f3a565b94505060206131a487828801612f3a565b93505060406131b587828801613096565b925050606085013567ffffffffffffffff8111156131d6576131d5614224565b5b6131e28782880161303a565b91505092959194509250565b6000806040838503121561320557613204614229565b5b600061321385828601612f3a565b925050602061322485828601612ffb565b9150509250929050565b6000806040838503121561324557613244614229565b5b600061325385828601612f3a565b925050602061326485828601613096565b9150509250929050565b60008060006060848603121561328757613286614229565b5b600061329586828701612f3a565b93505060206132a686828701613096565b925050604084013567ffffffffffffffff8111156132c7576132c6614224565b5b6132d386828701613068565b9150509250925092565b600080602083850312156132f4576132f3614229565b5b600083013567ffffffffffffffff81111561331257613311614224565b5b61331e85828601612f4f565b92509250509250929050565b6000806000806000806060878903121561334757613346614229565b5b600087013567ffffffffffffffff81111561336557613364614224565b5b61337189828a01612fa5565b9650965050602087013567ffffffffffffffff81111561339457613393614224565b5b6133a089828a01612f4f565b9450945050604087013567ffffffffffffffff8111156133c3576133c2614224565b5b6133cf89828a01612f4f565b92509250509295509295509295565b6000602082840312156133f4576133f3614229565b5b600061340284828501612ffb565b91505092915050565b60006020828403121561342157613420614229565b5b600061342f84828501613010565b91505092915050565b60006020828403121561344e5761344d614229565b5b600061345c84828501613025565b91505092915050565b60006020828403121561347b5761347a614229565b5b600082013567ffffffffffffffff81111561349957613498614224565b5b6134a584828501613068565b91505092915050565b6000602082840312156134c4576134c3614229565b5b60006134d284828501613096565b91505092915050565b600080604083850312156134f2576134f1614229565b5b600061350085828601613096565b925050602061351185828601612f3a565b9150509250929050565b60006135278383613977565b60208301905092915050565b61353c81613f92565b82525050565b600061354d82613e06565b6135578185613e34565b935061356283613df6565b8060005b8381101561359357815161357a888261351b565b975061358583613e27565b925050600181019050613566565b5085935050505092915050565b6135a981613fa4565b82525050565b60006135ba82613e11565b6135c48185613e45565b93506135d4818560208601614015565b6135dd8161422e565b840191505092915050565b60006135f382613e1c565b6135fd8185613e61565b935061360d818560208601614015565b6136168161422e565b840191505092915050565b600061362c82613e1c565b6136368185613e72565b9350613646818560208601614015565b80840191505092915050565b600061365f600c83613e61565b915061366a8261423f565b602082019050919050565b6000613682601383613e61565b915061368d82614268565b602082019050919050565b60006136a5603283613e61565b91506136b082614291565b604082019050919050565b60006136c8602683613e61565b91506136d3826142e0565b604082019050919050565b60006136eb602583613e61565b91506136f68261432f565b604082019050919050565b600061370e601c83613e61565b91506137198261437e565b602082019050919050565b6000613731601483613e61565b915061373c826143a7565b602082019050919050565b6000613754602083613e61565b915061375f826143d0565b602082019050919050565b6000613777602483613e61565b9150613782826143f9565b604082019050919050565b600061379a601983613e61565b91506137a582614448565b602082019050919050565b60006137bd602983613e61565b91506137c882614471565b604082019050919050565b60006137e0603e83613e61565b91506137eb826144c0565b604082019050919050565b6000613803602083613e61565b915061380e8261450f565b602082019050919050565b6000613826602c83613e61565b915061383182614538565b604082019050919050565b6000613849602083613e61565b915061385482614587565b602082019050919050565b600061386c601783613e61565b9150613877826145b0565b602082019050919050565b600061388f601483613e61565b915061389a826145d9565b602082019050919050565b60006138b2601883613e61565b91506138bd82614602565b602082019050919050565b60006138d5602183613e61565b91506138e08261462b565b604082019050919050565b60006138f8600083613e56565b91506139038261467a565b600082019050919050565b600061391b601483613e61565b91506139268261467d565b602082019050919050565b600061393e602e83613e61565b9150613949826146a6565b604082019050919050565b6000613961601383613e61565b915061396c826146f5565b602082019050919050565b61398081613ffc565b82525050565b61398f81613ffc565b82525050565b60006139a18285613621565b91506139ad8284613621565b91508190509392505050565b60006139c4826138eb565b9150819050919050565b60006020820190506139e36000830184613533565b92915050565b60006080820190506139fe6000830187613533565b613a0b6020830186613533565b613a186040830185613986565b8181036060830152613a2a81846135af565b905095945050505050565b60006020820190508181036000830152613a4f8184613542565b905092915050565b6000602082019050613a6c60008301846135a0565b92915050565b60006020820190508181036000830152613a8c81846135e8565b905092915050565b60006020820190508181036000830152613aad81613652565b9050919050565b60006020820190508181036000830152613acd81613675565b9050919050565b60006020820190508181036000830152613aed81613698565b9050919050565b60006020820190508181036000830152613b0d816136bb565b9050919050565b60006020820190508181036000830152613b2d816136de565b9050919050565b60006020820190508181036000830152613b4d81613701565b9050919050565b60006020820190508181036000830152613b6d81613724565b9050919050565b60006020820190508181036000830152613b8d81613747565b9050919050565b60006020820190508181036000830152613bad8161376a565b9050919050565b60006020820190508181036000830152613bcd8161378d565b9050919050565b60006020820190508181036000830152613bed816137b0565b9050919050565b60006020820190508181036000830152613c0d816137d3565b9050919050565b60006020820190508181036000830152613c2d816137f6565b9050919050565b60006020820190508181036000830152613c4d81613819565b9050919050565b60006020820190508181036000830152613c6d8161383c565b9050919050565b60006020820190508181036000830152613c8d8161385f565b9050919050565b60006020820190508181036000830152613cad81613882565b9050919050565b60006020820190508181036000830152613ccd816138a5565b9050919050565b60006020820190508181036000830152613ced816138c8565b9050919050565b60006020820190508181036000830152613d0d8161390e565b9050919050565b60006020820190508181036000830152613d2d81613931565b9050919050565b60006020820190508181036000830152613d4d81613954565b9050919050565b6000602082019050613d696000830184613986565b92915050565b6000613d79613d8a565b9050613d85828261407a565b919050565b6000604051905090565b600067ffffffffffffffff821115613daf57613dae6141e1565b5b613db88261422e565b9050602081019050919050565b600067ffffffffffffffff821115613de057613ddf6141e1565b5b613de98261422e565b9050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b6000613e8882613ffc565b9150613e9383613ffc565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613ec857613ec7614125565b5b828201905092915050565b6000613ede82613ffc565b9150613ee983613ffc565b925082613ef957613ef8614154565b5b828204905092915050565b6000613f0f82613ffc565b9150613f1a83613ffc565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613f5357613f52614125565b5b828202905092915050565b6000613f6982613ffc565b9150613f7483613ffc565b925082821015613f8757613f86614125565b5b828203905092915050565b6000613f9d82613fdc565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015614033578082015181840152602081019050614018565b83811115614042576000848401525b50505050565b6000600282049050600182168061406057607f821691505b6020821081141561407457614073614183565b5b50919050565b6140838261422e565b810181811067ffffffffffffffff821117156140a2576140a16141e1565b5b80604052505050565b60006140b682613ffc565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156140e9576140e8614125565b5b600182019050919050565b60006140ff82613ffc565b915061410a83613ffc565b92508261411a57614119614154565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e6f742061204275726e65720000000000000000000000000000000000000000600082015250565b7f4d617820737570706c7920657863656564656400000000000000000000000000600082015250565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f496e76616c6964206d696e7420616d6f756e7421000000000000000000000000600082015250565b7f546f6b656e20646f6573206e6f74206578697374206f72206973206275726e74600082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000602082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f4552433732314d657461646174613a2055524920736574206f66206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f54686520636f6e74726163742069732070617573656421000000000000000000600082015250565b7f41727261797320646f206e6f74206d617463682e000000000000000000000000600082015250565b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b50565b7f4d617820737570706c7920657863656564656421000000000000000000000000600082015250565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206e6f7220617070726f766564000000000000000000000000000000000000602082015250565b7f496e73756666696369656e742066756e64732100000000000000000000000000600082015250565b61472781613f92565b811461473257600080fd5b50565b61473e81613fa4565b811461474957600080fd5b50565b61475581613fb0565b811461476057600080fd5b50565b61476c81613ffc565b811461477757600080fd5b5056fea264697066735822122009a878806e2d355426566896a44749276510270db9f21e44195f3d9810aa941664736f6c63430008070033
Deployed Bytecode
0x60806040526004361061025c5760003560e01c806370a0823111610144578063b88d4fde116100b6578063e0a808531161007a578063e0a80853146108ad578063e3d8bbe5146108d6578063e985e9c5146108ff578063efbd73f41461093c578063f2fde38b14610965578063f44637ba1461098e5761025c565b8063b88d4fde146107ca578063bb4fc100146107f3578063c87b56dd1461081c578063cd279c7c14610859578063d5abeb01146108825761025c565b806394354fd01161010857806394354fd0146106db57806395d89b4114610706578063a0712d6814610731578063a22cb4651461074d578063a45ba8e714610776578063b071401b146107a15761025c565b806370a082311461060a578063715018a6146106475780637ec4a6591461065e57806388451674146106875780638da5cb5b146106b05761025c565b80633ccfd60b116101dd57806351830227116101a157806351830227146104f85780635503a0e81461052357806355f804b31461054e5780635c975abb1461057757806362b99ad4146105a25780636352211e146105cd5761025c565b80633ccfd60b1461042957806342842e0e1461044057806342d8c7d514610469578063438b63001461049257806344a0d68a146104cf5761025c565b806313faede61161022457806313faede61461035857806316ba10e01461038357806316c38b3c146103ac57806318160ddd146103d557806323b872dd146104005761025c565b806301ffc9a714610261578063028468581461029e57806306fdde03146102c7578063081812fc146102f2578063095ea7b31461032f575b600080fd5b34801561026d57600080fd5b506102886004803603810190610283919061340b565b6109b7565b6040516102959190613a57565b60405180910390f35b3480156102aa57600080fd5b506102c560048036038101906102c091906130ab565b610a99565b005b3480156102d357600080fd5b506102dc610afc565b6040516102e99190613a72565b60405180910390f35b3480156102fe57600080fd5b50610319600480360381019061031491906134ae565b610b8e565b60405161032691906139ce565b60405180910390f35b34801561033b57600080fd5b506103566004803603810190610351919061322e565b610bd4565b005b34801561036457600080fd5b5061036d610cec565b60405161037a9190613d54565b60405180910390f35b34801561038f57600080fd5b506103aa60048036038101906103a59190613465565b610cf2565b005b3480156103b857600080fd5b506103d360048036038101906103ce91906133de565b610d14565b005b3480156103e157600080fd5b506103ea610d39565b6040516103f79190613d54565b60405180910390f35b34801561040c57600080fd5b5061042760048036038101906104229190613118565b610d4a565b005b34801561043557600080fd5b5061043e610daa565b005b34801561044c57600080fd5b5061046760048036038101906104629190613118565b610e32565b005b34801561047557600080fd5b50610490600480360381019061048b919061332a565b610e52565b005b34801561049e57600080fd5b506104b960048036038101906104b491906130ab565b611021565b6040516104c69190613a35565b60405180910390f35b3480156104db57600080fd5b506104f660048036038101906104f191906134ae565b61114e565b005b34801561050457600080fd5b5061050d611160565b60405161051a9190613a57565b60405180910390f35b34801561052f57600080fd5b50610538611173565b6040516105459190613a72565b60405180910390f35b34801561055a57600080fd5b5061057560048036038101906105709190613465565b611201565b005b34801561058357600080fd5b5061058c611223565b6040516105999190613a57565b60405180910390f35b3480156105ae57600080fd5b506105b7611236565b6040516105c49190613a72565b60405180910390f35b3480156105d957600080fd5b506105f460048036038101906105ef91906134ae565b6112c4565b60405161060191906139ce565b60405180910390f35b34801561061657600080fd5b50610631600480360381019061062c91906130ab565b611376565b60405161063e9190613d54565b60405180910390f35b34801561065357600080fd5b5061065c61142e565b005b34801561066a57600080fd5b5061068560048036038101906106809190613465565b611442565b005b34801561069357600080fd5b506106ae60048036038101906106a991906134ae565b611464565b005b3480156106bc57600080fd5b506106c5611478565b6040516106d291906139ce565b60405180910390f35b3480156106e757600080fd5b506106f06114a2565b6040516106fd9190613d54565b60405180910390f35b34801561071257600080fd5b5061071b6114a8565b6040516107289190613a72565b60405180910390f35b61074b600480360381019061074691906134ae565b61153a565b005b34801561075957600080fd5b50610774600480360381019061076f91906131ee565b611693565b005b34801561078257600080fd5b5061078b6116a9565b6040516107989190613a72565b60405180910390f35b3480156107ad57600080fd5b506107c860048036038101906107c391906134ae565b611737565b005b3480156107d657600080fd5b506107f160048036038101906107ec919061316b565b611749565b005b3480156107ff57600080fd5b5061081a600480360381019061081591906134ae565b6117ab565b005b34801561082857600080fd5b50610843600480360381019061083e91906134ae565b61184a565b6040516108509190613a72565b60405180910390f35b34801561086557600080fd5b50610880600480360381019061087b919061326e565b61185c565b005b34801561088e57600080fd5b5061089761187d565b6040516108a49190613d54565b60405180910390f35b3480156108b957600080fd5b506108d460048036038101906108cf91906133de565b611883565b005b3480156108e257600080fd5b506108fd60048036038101906108f891906132dd565b6118a8565b005b34801561090b57600080fd5b50610926600480360381019061092191906130d8565b611976565b6040516109339190613a57565b60405180910390f35b34801561094857600080fd5b50610963600480360381019061095e91906134db565b611a0a565b005b34801561097157600080fd5b5061098c600480360381019061098791906130ab565b611acc565b005b34801561099a57600080fd5b506109b560048036038101906109b091906130ab565b611b50565b005b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610a8257507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610a925750610a9182611bb3565b5b9050919050565b610aa1611c1d565b6000601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b606060008054610b0b90614048565b80601f0160208091040260200160405190810160405280929190818152602001828054610b3790614048565b8015610b845780601f10610b5957610100808354040283529160200191610b84565b820191906000526020600020905b815481529060010190602001808311610b6757829003601f168201915b5050505050905090565b6000610b9982611c9b565b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610bdf826112c4565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610c50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4790613cd4565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610c6f611ce6565b73ffffffffffffffffffffffffffffffffffffffff161480610c9e5750610c9d81610c98611ce6565b611976565b5b610cdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd490613bf4565b60405180910390fd5b610ce78383611cee565b505050565b600d5481565b610cfa611c1d565b80600b9080519060200190610d10929190612dd3565b5050565b610d1c611c1d565b80601060006101000a81548160ff02191690831515021790555050565b6000610d456009611da7565b905090565b610d5b610d55611ce6565b82611db5565b610d9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9190613d14565b60405180910390fd5b610da5838383611e4a565b505050565b610db2611c1d565b6000610dbc611478565b73ffffffffffffffffffffffffffffffffffffffff1647604051610ddf906139b9565b60006040518083038185875af1925050503d8060008114610e1c576040519150601f19603f3d011682016040523d82523d6000602084013e610e21565b606091505b5050905080610e2f57600080fd5b50565b610e4d83838360405180602001604052806000815250611749565b505050565b610e5a611c1d565b8383905086869050148015610e7457508181905084849050145b610eb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eaa90613c94565b60405180910390fd5b60005b8686905081101561101857600073ffffffffffffffffffffffffffffffffffffffff1660026000898985818110610ef057610eef6141b2565b5b90506020020135815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561100557868682818110610f5557610f546141b2565b5b90506020020135838383818110610f6f57610f6e6141b2565b5b9050602002016020810190610f8491906130ab565b73ffffffffffffffffffffffffffffffffffffffff16868684818110610fad57610fac6141b2565b5b9050602002016020810190610fc291906130ab565b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45b8080611010906140ab565b915050610eb6565b50505050505050565b6060600061102e83611376565b905060008167ffffffffffffffff81111561104c5761104b6141e1565b5b60405190808252806020026020018201604052801561107a5781602001602082028036833780820191505090505b50905060006001905060005b83811080156110975750600e548211155b156111425760006110a7836112c4565b9050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561112e5782848381518110611113576111126141b2565b5b602002602001018181525050818061112a906140ab565b9250505b8280611139906140ab565b93505050611086565b82945050505050919050565b611156611c1d565b80600d8190555050565b601060019054906101000a900460ff1681565b600b805461118090614048565b80601f01602080910402602001604051908101604052809291908181526020018280546111ac90614048565b80156111f95780601f106111ce576101008083540402835291602001916111f9565b820191906000526020600020905b8154815290600101906020018083116111dc57829003601f168201915b505050505081565b611209611c1d565b806011908051906020019061121f929190612dd3565b5050565b601060009054906101000a900460ff1681565b600a805461124390614048565b80601f016020809104026020016040519081016040528092919081815260200182805461126f90614048565b80156112bc5780601f10611291576101008083540402835291602001916112bc565b820191906000526020600020905b81548152906001019060200180831161129f57829003601f168201915b505050505081565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561136d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136490613cb4565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156113e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113de90613bd4565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611436611c1d565b61144060006120b1565b565b61144a611c1d565b80600a9080519060200190611460929190612dd3565b5050565b61146c611c1d565b61147581612177565b50565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600f5481565b6060600180546114b790614048565b80601f01602080910402602001604051908101604052809291908181526020018280546114e390614048565b80156115305780601f1061150557610100808354040283529160200191611530565b820191906000526020600020905b81548152906001019060200180831161151357829003601f168201915b5050505050905090565b8060008111801561154d5750600f548111155b61158c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158390613b54565b60405180910390fd5b600e548161159a6009611da7565b6115a49190613e7d565b11156115e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115dc90613cf4565b60405180910390fd5b601060009054906101000a900460ff1615611635576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162c90613c74565b60405180910390fd5b81600d546116439190613f04565b341015611685576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167c90613d34565b60405180910390fd5b61168f33836121cb565b5050565b6116a561169e611ce6565b838361220b565b5050565b600c80546116b690614048565b80601f01602080910402602001604051908101604052809291908181526020018280546116e290614048565b801561172f5780601f106117045761010080835404028352916020019161172f565b820191906000526020600020905b81548152906001019060200180831161171257829003601f168201915b505050505081565b61173f611c1d565b80600f8190555050565b61175a611754611ce6565b83611db5565b611799576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179090613d14565b60405180910390fd5b6117a584848484612378565b50505050565b601360006117b7611ce6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661183e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183590613a94565b60405180910390fd5b61184781612177565b50565b6060611855826123d4565b9050919050565b611864611c1d565b61186e83836124e7565b6118788282612505565b505050565b600e5481565b61188b611c1d565b80601060016101000a81548160ff02191690831515021790555050565b6118b0611c1d565b600e54828290506118c16009611da7565b6118cb9190613e7d565b111561190c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190390613ab4565b60405180910390fd5b60005b82829050811015611971576119246009612581565b61195e83838381811061193a576119396141b2565b5b905060200201602081019061194f91906130ab565b6119596009611da7565b612597565b8080611969906140ab565b91505061190f565b505050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b81600081118015611a1d5750600f548111155b611a5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5390613b54565b60405180910390fd5b600e5481611a6a6009611da7565b611a749190613e7d565b1115611ab5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aac90613cf4565b60405180910390fd5b611abd611c1d565b611ac782846121cb565b505050565b611ad4611c1d565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611b44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3b90613af4565b60405180910390fd5b611b4d816120b1565b50565b611b58611c1d565b6001601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b611c25611ce6565b73ffffffffffffffffffffffffffffffffffffffff16611c43611478565b73ffffffffffffffffffffffffffffffffffffffff1614611c99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9090613c54565b60405180910390fd5b565b611ca481612771565b611ce3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cda90613cb4565b60405180910390fd5b50565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16611d61836112c4565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600081600001549050919050565b600080611dc1836112c4565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611e035750611e028185611976565b5b80611e4157508373ffffffffffffffffffffffffffffffffffffffff16611e2984610b8e565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16611e6a826112c4565b73ffffffffffffffffffffffffffffffffffffffff1614611ec0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eb790613b14565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611f30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2790613b94565b60405180910390fd5b611f3b8383836127dd565b611f46600082611cee565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611f969190613f5e565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611fed9190613e7d565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46120ac8383836127e2565b505050565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b61218081612771565b6121bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b690613b74565b60405180910390fd5b6121c8816127e7565b50565b60005b81811015612206576121e06009612581565b6121f3836121ee6009611da7565b6124e7565b80806121fe906140ab565b9150506121ce565b505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561227a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227190613bb4565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161236b9190613a57565b60405180910390a3505050565b612383848484611e4a565b61238f848484846127f3565b6123ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123c590613ad4565b60405180910390fd5b50505050565b60606123df82611c9b565b60006006600084815260200190815260200160002080546123ff90614048565b80601f016020809104026020016040519081016040528092919081815260200182805461242b90614048565b80156124785780601f1061244d57610100808354040283529160200191612478565b820191906000526020600020905b81548152906001019060200180831161245b57829003601f168201915b50505050509050600061248961298a565b905060008151141561249f5781925050506124e2565b6000825111156124d45780826040516020016124bc929190613995565b604051602081830303815290604052925050506124e2565b6124dd84612a1c565b925050505b919050565b612501828260405180602001604052806000815250612a84565b5050565b61250d611c1d565b61251682612771565b612555576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161254c90613c34565b60405180910390fd5b8060126000848152602001908152602001600020908051906020019061257c929190612dd3565b505050565b6001816000016000828254019250508190555050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612607576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125fe90613c14565b60405180910390fd5b61261081612771565b15612650576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161264790613b34565b60405180910390fd5b61265c600083836127dd565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546126ac9190613e7d565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461276d600083836127e2565b5050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b505050565b505050565b6127f081612adf565b50565b60006128148473ffffffffffffffffffffffffffffffffffffffff16612b32565b1561297d578373ffffffffffffffffffffffffffffffffffffffff1663150b7a0261283d611ce6565b8786866040518563ffffffff1660e01b815260040161285f94939291906139e9565b602060405180830381600087803b15801561287957600080fd5b505af19250505080156128aa57506040513d601f19601f820116820180604052508101906128a79190613438565b60015b61292d573d80600081146128da576040519150601f19603f3d011682016040523d82523d6000602084013e6128df565b606091505b50600081511415612925576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161291c90613ad4565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612982565b600190505b949350505050565b60606011805461299990614048565b80601f01602080910402602001604051908101604052809291908181526020018280546129c590614048565b8015612a125780601f106129e757610100808354040283529160200191612a12565b820191906000526020600020905b8154815290600101906020018083116129f557829003601f168201915b5050505050905090565b6060612a2782611c9b565b6000612a3161298a565b90506000815111612a515760405180602001604052806000815250612a7c565b80612a5b84612b55565b604051602001612a6c929190613995565b6040516020818303038152906040525b915050919050565b612a8e8383612597565b612a9b60008484846127f3565b612ada576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ad190613ad4565b60405180910390fd5b505050565b612ae881612cb6565b6000600660008381526020019081526020016000208054612b0890614048565b905014612b2f57600660008281526020019081526020016000206000612b2e9190612e59565b5b50565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60606000821415612b9d576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612cb1565b600082905060005b60008214612bcf578080612bb8906140ab565b915050600a82612bc89190613ed3565b9150612ba5565b60008167ffffffffffffffff811115612beb57612bea6141e1565b5b6040519080825280601f01601f191660200182016040528015612c1d5781602001600182028036833780820191505090505b5090505b60008514612caa57600182612c369190613f5e565b9150600a85612c4591906140f4565b6030612c519190613e7d565b60f81b818381518110612c6757612c666141b2565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85612ca39190613ed3565b9450612c21565b8093505050505b919050565b6000612cc1826112c4565b9050612ccf816000846127dd565b612cda600083611cee565b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612d2a9190613f5e565b925050819055506002600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905581600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612dcf816000846127e2565b5050565b828054612ddf90614048565b90600052602060002090601f016020900481019282612e015760008555612e48565b82601f10612e1a57805160ff1916838001178555612e48565b82800160010185558215612e48579182015b82811115612e47578251825591602001919060010190612e2c565b5b509050612e559190612e99565b5090565b508054612e6590614048565b6000825580601f10612e775750612e96565b601f016020900490600052602060002090810190612e959190612e99565b5b50565b5b80821115612eb2576000816000905550600101612e9a565b5090565b6000612ec9612ec484613d94565b613d6f565b905082815260208101848484011115612ee557612ee461421f565b5b612ef0848285614006565b509392505050565b6000612f0b612f0684613dc5565b613d6f565b905082815260208101848484011115612f2757612f2661421f565b5b612f32848285614006565b509392505050565b600081359050612f498161471e565b92915050565b60008083601f840112612f6557612f64614215565b5b8235905067ffffffffffffffff811115612f8257612f81614210565b5b602083019150836020820283011115612f9e57612f9d61421a565b5b9250929050565b60008083601f840112612fbb57612fba614215565b5b8235905067ffffffffffffffff811115612fd857612fd7614210565b5b602083019150836020820283011115612ff457612ff361421a565b5b9250929050565b60008135905061300a81614735565b92915050565b60008135905061301f8161474c565b92915050565b6000815190506130348161474c565b92915050565b600082601f83011261304f5761304e614215565b5b813561305f848260208601612eb6565b91505092915050565b600082601f83011261307d5761307c614215565b5b813561308d848260208601612ef8565b91505092915050565b6000813590506130a581614763565b92915050565b6000602082840312156130c1576130c0614229565b5b60006130cf84828501612f3a565b91505092915050565b600080604083850312156130ef576130ee614229565b5b60006130fd85828601612f3a565b925050602061310e85828601612f3a565b9150509250929050565b60008060006060848603121561313157613130614229565b5b600061313f86828701612f3a565b935050602061315086828701612f3a565b925050604061316186828701613096565b9150509250925092565b6000806000806080858703121561318557613184614229565b5b600061319387828801612f3a565b94505060206131a487828801612f3a565b93505060406131b587828801613096565b925050606085013567ffffffffffffffff8111156131d6576131d5614224565b5b6131e28782880161303a565b91505092959194509250565b6000806040838503121561320557613204614229565b5b600061321385828601612f3a565b925050602061322485828601612ffb565b9150509250929050565b6000806040838503121561324557613244614229565b5b600061325385828601612f3a565b925050602061326485828601613096565b9150509250929050565b60008060006060848603121561328757613286614229565b5b600061329586828701612f3a565b93505060206132a686828701613096565b925050604084013567ffffffffffffffff8111156132c7576132c6614224565b5b6132d386828701613068565b9150509250925092565b600080602083850312156132f4576132f3614229565b5b600083013567ffffffffffffffff81111561331257613311614224565b5b61331e85828601612f4f565b92509250509250929050565b6000806000806000806060878903121561334757613346614229565b5b600087013567ffffffffffffffff81111561336557613364614224565b5b61337189828a01612fa5565b9650965050602087013567ffffffffffffffff81111561339457613393614224565b5b6133a089828a01612f4f565b9450945050604087013567ffffffffffffffff8111156133c3576133c2614224565b5b6133cf89828a01612f4f565b92509250509295509295509295565b6000602082840312156133f4576133f3614229565b5b600061340284828501612ffb565b91505092915050565b60006020828403121561342157613420614229565b5b600061342f84828501613010565b91505092915050565b60006020828403121561344e5761344d614229565b5b600061345c84828501613025565b91505092915050565b60006020828403121561347b5761347a614229565b5b600082013567ffffffffffffffff81111561349957613498614224565b5b6134a584828501613068565b91505092915050565b6000602082840312156134c4576134c3614229565b5b60006134d284828501613096565b91505092915050565b600080604083850312156134f2576134f1614229565b5b600061350085828601613096565b925050602061351185828601612f3a565b9150509250929050565b60006135278383613977565b60208301905092915050565b61353c81613f92565b82525050565b600061354d82613e06565b6135578185613e34565b935061356283613df6565b8060005b8381101561359357815161357a888261351b565b975061358583613e27565b925050600181019050613566565b5085935050505092915050565b6135a981613fa4565b82525050565b60006135ba82613e11565b6135c48185613e45565b93506135d4818560208601614015565b6135dd8161422e565b840191505092915050565b60006135f382613e1c565b6135fd8185613e61565b935061360d818560208601614015565b6136168161422e565b840191505092915050565b600061362c82613e1c565b6136368185613e72565b9350613646818560208601614015565b80840191505092915050565b600061365f600c83613e61565b915061366a8261423f565b602082019050919050565b6000613682601383613e61565b915061368d82614268565b602082019050919050565b60006136a5603283613e61565b91506136b082614291565b604082019050919050565b60006136c8602683613e61565b91506136d3826142e0565b604082019050919050565b60006136eb602583613e61565b91506136f68261432f565b604082019050919050565b600061370e601c83613e61565b91506137198261437e565b602082019050919050565b6000613731601483613e61565b915061373c826143a7565b602082019050919050565b6000613754602083613e61565b915061375f826143d0565b602082019050919050565b6000613777602483613e61565b9150613782826143f9565b604082019050919050565b600061379a601983613e61565b91506137a582614448565b602082019050919050565b60006137bd602983613e61565b91506137c882614471565b604082019050919050565b60006137e0603e83613e61565b91506137eb826144c0565b604082019050919050565b6000613803602083613e61565b915061380e8261450f565b602082019050919050565b6000613826602c83613e61565b915061383182614538565b604082019050919050565b6000613849602083613e61565b915061385482614587565b602082019050919050565b600061386c601783613e61565b9150613877826145b0565b602082019050919050565b600061388f601483613e61565b915061389a826145d9565b602082019050919050565b60006138b2601883613e61565b91506138bd82614602565b602082019050919050565b60006138d5602183613e61565b91506138e08261462b565b604082019050919050565b60006138f8600083613e56565b91506139038261467a565b600082019050919050565b600061391b601483613e61565b91506139268261467d565b602082019050919050565b600061393e602e83613e61565b9150613949826146a6565b604082019050919050565b6000613961601383613e61565b915061396c826146f5565b602082019050919050565b61398081613ffc565b82525050565b61398f81613ffc565b82525050565b60006139a18285613621565b91506139ad8284613621565b91508190509392505050565b60006139c4826138eb565b9150819050919050565b60006020820190506139e36000830184613533565b92915050565b60006080820190506139fe6000830187613533565b613a0b6020830186613533565b613a186040830185613986565b8181036060830152613a2a81846135af565b905095945050505050565b60006020820190508181036000830152613a4f8184613542565b905092915050565b6000602082019050613a6c60008301846135a0565b92915050565b60006020820190508181036000830152613a8c81846135e8565b905092915050565b60006020820190508181036000830152613aad81613652565b9050919050565b60006020820190508181036000830152613acd81613675565b9050919050565b60006020820190508181036000830152613aed81613698565b9050919050565b60006020820190508181036000830152613b0d816136bb565b9050919050565b60006020820190508181036000830152613b2d816136de565b9050919050565b60006020820190508181036000830152613b4d81613701565b9050919050565b60006020820190508181036000830152613b6d81613724565b9050919050565b60006020820190508181036000830152613b8d81613747565b9050919050565b60006020820190508181036000830152613bad8161376a565b9050919050565b60006020820190508181036000830152613bcd8161378d565b9050919050565b60006020820190508181036000830152613bed816137b0565b9050919050565b60006020820190508181036000830152613c0d816137d3565b9050919050565b60006020820190508181036000830152613c2d816137f6565b9050919050565b60006020820190508181036000830152613c4d81613819565b9050919050565b60006020820190508181036000830152613c6d8161383c565b9050919050565b60006020820190508181036000830152613c8d8161385f565b9050919050565b60006020820190508181036000830152613cad81613882565b9050919050565b60006020820190508181036000830152613ccd816138a5565b9050919050565b60006020820190508181036000830152613ced816138c8565b9050919050565b60006020820190508181036000830152613d0d8161390e565b9050919050565b60006020820190508181036000830152613d2d81613931565b9050919050565b60006020820190508181036000830152613d4d81613954565b9050919050565b6000602082019050613d696000830184613986565b92915050565b6000613d79613d8a565b9050613d85828261407a565b919050565b6000604051905090565b600067ffffffffffffffff821115613daf57613dae6141e1565b5b613db88261422e565b9050602081019050919050565b600067ffffffffffffffff821115613de057613ddf6141e1565b5b613de98261422e565b9050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b6000613e8882613ffc565b9150613e9383613ffc565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613ec857613ec7614125565b5b828201905092915050565b6000613ede82613ffc565b9150613ee983613ffc565b925082613ef957613ef8614154565b5b828204905092915050565b6000613f0f82613ffc565b9150613f1a83613ffc565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613f5357613f52614125565b5b828202905092915050565b6000613f6982613ffc565b9150613f7483613ffc565b925082821015613f8757613f86614125565b5b828203905092915050565b6000613f9d82613fdc565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015614033578082015181840152602081019050614018565b83811115614042576000848401525b50505050565b6000600282049050600182168061406057607f821691505b6020821081141561407457614073614183565b5b50919050565b6140838261422e565b810181811067ffffffffffffffff821117156140a2576140a16141e1565b5b80604052505050565b60006140b682613ffc565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156140e9576140e8614125565b5b600182019050919050565b60006140ff82613ffc565b915061410a83613ffc565b92508261411a57614119614154565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e6f742061204275726e65720000000000000000000000000000000000000000600082015250565b7f4d617820737570706c7920657863656564656400000000000000000000000000600082015250565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f496e76616c6964206d696e7420616d6f756e7421000000000000000000000000600082015250565b7f546f6b656e20646f6573206e6f74206578697374206f72206973206275726e74600082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000602082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f4552433732314d657461646174613a2055524920736574206f66206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f54686520636f6e74726163742069732070617573656421000000000000000000600082015250565b7f41727261797320646f206e6f74206d617463682e000000000000000000000000600082015250565b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b50565b7f4d617820737570706c7920657863656564656421000000000000000000000000600082015250565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206e6f7220617070726f766564000000000000000000000000000000000000602082015250565b7f496e73756666696369656e742066756e64732100000000000000000000000000600082015250565b61472781613f92565b811461473257600080fd5b50565b61473e81613fa4565b811461474957600080fd5b50565b61475581613fb0565b811461476057600080fd5b50565b61476c81613ffc565b811461477757600080fd5b5056fea264697066735822122009a878806e2d355426566896a44749276510270db9f21e44195f3d9810aa941664736f6c63430008070033
Deployed Bytecode Sourcemap
41654:6202:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26419:305;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;43635:88;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27346:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28859:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28376:417;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;41975:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;47380:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;42669:83;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;42858:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29559:336;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;46770:488;;;;;;;;;;;;;:::i;:::-;;29966:185;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;45643:418;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;46069:693;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;44211:80;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;42130:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;41891:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;47496:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;42098:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;41856:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27057:222;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26788:207;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6821:103;;;;;;;;;;;;;:::i;:::-;;47266:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;43840:96;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6173:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;42052:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27515:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;43078:261;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29102:155;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;41931:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;44299:136;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30222:323;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;43944:100;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;44652:196;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;43351:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;42013:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;42760:87;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;45261:374;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29328:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;44856:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7079:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;43543:84;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26419:305;26521:4;26573:25;26558:40;;;:11;:40;;;;:105;;;;26630:33;26615:48;;;:11;:48;;;;26558:105;:158;;;;26680:36;26704:11;26680:23;:36::i;:::-;26558:158;26538:178;;26419:305;;;:::o;43635:88::-;6059:13;:11;:13::i;:::-;43710:5:::1;43696:8;:11;43705:1;43696:11;;;;;;;;;;;;;;;;:19;;;;;;;;;;;;;;;;;;43635:88:::0;:::o;27346:100::-;27400:13;27433:5;27426:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27346:100;:::o;28859:171::-;28935:7;28955:23;28970:7;28955:14;:23::i;:::-;28998:15;:24;29014:7;28998:24;;;;;;;;;;;;;;;;;;;;;28991:31;;28859:171;;;:::o;28376:417::-;28457:13;28473:23;28488:7;28473:14;:23::i;:::-;28457:39;;28521:5;28515:11;;:2;:11;;;;28507:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;28615:5;28599:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;28624:37;28641:5;28648:12;:10;:12::i;:::-;28624:16;:37::i;:::-;28599:62;28577:174;;;;;;;;;;;;:::i;:::-;;;;;;;;;28764:21;28773:2;28777:7;28764:8;:21::i;:::-;28446:347;28376:417;;:::o;41975:31::-;;;;:::o;47380:106::-;6059:13;:11;:13::i;:::-;47468:10:::1;47456:9;:22;;;;;;;;;;;;:::i;:::-;;47380:106:::0;:::o;42669:83::-;6059:13;:11;:13::i;:::-;42738:6:::1;42729;;:15;;;;;;;;;;;;;;;;;;42669:83:::0;:::o;42858:95::-;42902:7;42929:16;:6;:14;:16::i;:::-;42922:23;;42858:95;:::o;29559:336::-;29754:41;29773:12;:10;:12::i;:::-;29787:7;29754:18;:41::i;:::-;29746:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;29859:28;29869:4;29875:2;29879:7;29859:9;:28::i;:::-;29559:336;;;:::o;46770:488::-;6059:13;:11;:13::i;:::-;47070:7:::1;47091;:5;:7::i;:::-;47083:21;;47112;47083:55;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;47069:69;;;47157:2;47149:11;;;::::0;::::1;;46807:451;46770:488::o:0;29966:185::-;30104:39;30121:4;30127:2;30131:7;30104:39;;;;;;;;;;;;:16;:39::i;:::-;29966:185;;;:::o;45643:418::-;6059:13;:11;:13::i;:::-;45798:4:::1;;:11;;45780:7;;:14;;:29;:57;;;;;45828:2;;:9;;45813:4;;:11;;:24;45780:57;45772:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;45876:9;45872:182;45895:7;;:14;;45891:1;:18;45872:182;;;45965:1;45934:33;;:7;:19;45942:7;;45950:1;45942:10;;;;;;;:::i;:::-;;;;;;;;45934:19;;;;;;;;;;;;;;;;;;;;;:33;;;45931:112;;;46017:7;;46025:1;46017:10;;;;;;;:::i;:::-;;;;;;;;46010:2;;46013:1;46010:5;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;45992:36;;46001:4;;46006:1;46001:7;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;45992:36;;;;;;;;;;;;45931:112;45911:3;;;;;:::i;:::-;;;;45872:182;;;;45643:418:::0;;;;;;:::o;46069:693::-;46155:16;46189:23;46215:16;46225:5;46215:9;:16::i;:::-;46189:42;;46242:30;46289:15;46275:30;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;46242:63;;46316:22;46341:1;46316:26;;46353:23;46393:329;46418:15;46400;:33;:64;;;;;46455:9;;46437:14;:27;;46400:64;46393:329;;;46477:25;46505:23;46513:14;46505:7;:23::i;:::-;46477:51;;46566:6;;;;;;;;;;;46545:27;;:17;:27;;;46541:141;;;46622:14;46589:13;46603:15;46589:30;;;;;;;;:::i;:::-;;;;;;;:47;;;;;46653:17;;;;;:::i;:::-;;;;46541:141;46694:16;;;;;:::i;:::-;;;;46466:256;46393:329;;;46741:13;46734:20;;;;;;46069:693;;;:::o;44211:80::-;6059:13;:11;:13::i;:::-;44278:5:::1;44271:4;:12;;;;44211:80:::0;:::o;42130:28::-;;;;;;;;;;;;;:::o;41891:33::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;47496:111::-;6059:13;:11;:13::i;:::-;47591:8:::1;47572:16;:27;;;;;;;;;;;;:::i;:::-;;47496:111:::0;:::o;42098:25::-;;;;;;;;;;;;;:::o;41856:28::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;27057:222::-;27129:7;27149:13;27165:7;:16;27173:7;27165:16;;;;;;;;;;;;;;;;;;;;;27149:32;;27217:1;27200:19;;:5;:19;;;;27192:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;27266:5;27259:12;;;27057:222;;;:::o;26788:207::-;26860:7;26905:1;26888:19;;:5;:19;;;;26880:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;26971:9;:16;26981:5;26971:16;;;;;;;;;;;;;;;;26964:23;;26788:207;;;:::o;6821:103::-;6059:13;:11;:13::i;:::-;6886:30:::1;6913:1;6886:18;:30::i;:::-;6821:103::o:0;47266:106::-;6059:13;:11;:13::i;:::-;47354:10:::1;47342:9;:22;;;;;;;;;;;;:::i;:::-;;47266:106:::0;:::o;43840:96::-;6059:13;:11;:13::i;:::-;43909:19:::1;43920:7;43909:10;:19::i;:::-;43840:96:::0;:::o;6173:87::-;6219:7;6246:6;;;;;;;;;;;6239:13;;6173:87;:::o;42052:37::-;;;;:::o;27515:104::-;27571:13;27604:7;27597:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27515:104;:::o;43078:261::-;43143:11;42482:1;42468:11;:15;:52;;;;;42502:18;;42487:11;:33;;42468:52;42460:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;42598:9;;42583:11;42564:16;:6;:14;:16::i;:::-;:30;;;;:::i;:::-;:43;;42556:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;43176:6:::1;;;;;;;;;;;43175:7;43167:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;43249:11;43242:4;;:18;;;;:::i;:::-;43229:9;:31;;43221:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;43297:34;43307:10;43319:11;43297:9;:34::i;:::-;43078:261:::0;;:::o;29102:155::-;29197:52;29216:12;:10;:12::i;:::-;29230:8;29240;29197:18;:52::i;:::-;29102:155;;:::o;41931:31::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;44299:136::-;6059:13;:11;:13::i;:::-;44408:19:::1;44387:18;:40;;;;44299:136:::0;:::o;30222:323::-;30396:41;30415:12;:10;:12::i;:::-;30429:7;30396:18;:41::i;:::-;30388:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;30499:38;30513:4;30519:2;30523:7;30532:4;30499:13;:38::i;:::-;30222:323;;;;:::o;43944:100::-;43773:8;:22;43782:12;:10;:12::i;:::-;43773:22;;;;;;;;;;;;;;;;;;;;;;;;;43765:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;44017:19:::1;44028:7;44017:10;:19::i;:::-;43944:100:::0;:::o;44652:196::-;44779:13;44817:23;44832:7;44817:14;:23::i;:::-;44810:30;;44652:196;;;:::o;43351:184::-;6059:13;:11;:13::i;:::-;43468:22:::1;43478:2;43482:7;43468:9;:22::i;:::-;43501:26;43514:7;43523:3;43501:12;:26::i;:::-;43351:184:::0;;;:::o;42013:32::-;;;;:::o;42760:87::-;6059:13;:11;:13::i;:::-;42833:6:::1;42822:8;;:17;;;;;;;;;;;;;;;;;;42760:87:::0;:::o;45261:374::-;6059:13;:11;:13::i;:::-;45388:9:::1;;45367:10;;:17;;45348:16;:6;:14;:16::i;:::-;:36;;;;:::i;:::-;:49;;45340:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;45487:9;45482:146;45506:10;;:17;;45502:1;:21;45482:146;;;45545:18;:6;:16;:18::i;:::-;45578:38;45584:10;;45595:1;45584:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;45599:16;:6;:14;:16::i;:::-;45578:5;:38::i;:::-;45525:3;;;;;:::i;:::-;;;;45482:146;;;;45261:374:::0;;:::o;29328:164::-;29425:4;29449:18;:25;29468:5;29449:25;;;;;;;;;;;;;;;:35;29475:8;29449:35;;;;;;;;;;;;;;;;;;;;;;;;;29442:42;;29328:164;;;;:::o;44856:161::-;44942:11;42482:1;42468:11;:15;:52;;;;;42502:18;;42487:11;:33;;42468:52;42460:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;42598:9;;42583:11;42564:16;:6;:14;:16::i;:::-;:30;;;;:::i;:::-;:43;;42556:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;6059:13:::1;:11;:13::i;:::-;44976:33:::2;44986:9;44997:11;44976:9;:33::i;:::-;44856:161:::0;;;:::o;7079:201::-;6059:13;:11;:13::i;:::-;7188:1:::1;7168:22;;:8;:22;;;;7160:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;7244:28;7263:8;7244:18;:28::i;:::-;7079:201:::0;:::o;43543:84::-;6059:13;:11;:13::i;:::-;43615:4:::1;43601:8;:11;43610:1;43601:11;;;;;;;;;;;;;;;;:18;;;;;;;;;;;;;;;;;;43543:84:::0;:::o;19079:157::-;19164:4;19203:25;19188:40;;;:11;:40;;;;19181:47;;19079:157;;;:::o;6338:132::-;6413:12;:10;:12::i;:::-;6402:23;;:7;:5;:7::i;:::-;:23;;;6394:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6338:132::o;36834:135::-;36916:16;36924:7;36916;:16::i;:::-;36908:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;36834:135;:::o;4710:98::-;4763:7;4790:10;4783:17;;4710:98;:::o;36113:174::-;36215:2;36188:15;:24;36204:7;36188:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;36271:7;36267:2;36233:46;;36242:23;36257:7;36242:14;:23::i;:::-;36233:46;;;;;;;;;;;;36113:174;;:::o;915:114::-;980:7;1007;:14;;;1000:21;;915:114;;;:::o;32346:264::-;32439:4;32456:13;32472:23;32487:7;32472:14;:23::i;:::-;32456:39;;32525:5;32514:16;;:7;:16;;;:52;;;;32534:32;32551:5;32558:7;32534:16;:32::i;:::-;32514:52;:87;;;;32594:7;32570:31;;:20;32582:7;32570:11;:20::i;:::-;:31;;;32514:87;32506:96;;;32346:264;;;;:::o;35369:625::-;35528:4;35501:31;;:23;35516:7;35501:14;:23::i;:::-;:31;;;35493:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;35607:1;35593:16;;:2;:16;;;;35585:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;35663:39;35684:4;35690:2;35694:7;35663:20;:39::i;:::-;35767:29;35784:1;35788:7;35767:8;:29::i;:::-;35828:1;35809:9;:15;35819:4;35809:15;;;;;;;;;;;;;;;;:20;;;;;;;:::i;:::-;;;;;;;;35857:1;35840:9;:13;35850:2;35840:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;35888:2;35869:7;:16;35877:7;35869:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;35927:7;35923:2;35908:27;;35917:4;35908:27;;;;;;;;;;;;35948:38;35968:4;35974:2;35978:7;35948:19;:38::i;:::-;35369:625;;;:::o;7440:191::-;7514:16;7533:6;;;;;;;;;;;7514:25;;7559:8;7550:6;;:17;;;;;;;;;;;;;;;;;;7614:8;7583:40;;7604:8;7583:40;;;;;;;;;;;;7503:128;7440:191;:::o;44052:151::-;44117:16;44125:7;44117;:16::i;:::-;44109:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;44181:14;44187:7;44181:5;:14::i;:::-;44052:151;:::o;45027:226::-;45111:9;45106:140;45130:11;45126:1;:15;45106:140;;;45163:18;:6;:16;:18::i;:::-;45196:38;45206:9;45217:16;:6;:14;:16::i;:::-;45196:9;:38::i;:::-;45143:3;;;;;:::i;:::-;;;;45106:140;;;;45027:226;;:::o;36430:315::-;36585:8;36576:17;;:5;:17;;;;36568:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;36672:8;36634:18;:25;36653:5;36634:25;;;;;;;;;;;;;;;:35;36660:8;36634:35;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;36718:8;36696:41;;36711:5;36696:41;;;36728:8;36696:41;;;;;;:::i;:::-;;;;;;;;36430:315;;;:::o;31426:313::-;31582:28;31592:4;31598:2;31602:7;31582:9;:28::i;:::-;31629:47;31652:4;31658:2;31662:7;31671:4;31629:22;:47::i;:::-;31621:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;31426:313;;;;:::o;40141:624::-;40214:13;40240:23;40255:7;40240:14;:23::i;:::-;40276;40302:10;:19;40313:7;40302:19;;;;;;;;;;;40276:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;40332:18;40353:10;:8;:10::i;:::-;40332:31;;40461:1;40445:4;40439:18;:23;40435:72;;;40486:9;40479:16;;;;;;40435:72;40637:1;40617:9;40611:23;:27;40607:108;;;40686:4;40692:9;40669:33;;;;;;;;;:::i;:::-;;;;;;;;;;;;;40655:48;;;;;;40607:108;40734:23;40749:7;40734:14;:23::i;:::-;40727:30;;;;40141:624;;;;:::o;32952:110::-;33028:26;33038:2;33042:7;33028:26;;;;;;;;;;;;:9;:26::i;:::-;32952:110;;:::o;47619:234::-;6059:13;:11;:13::i;:::-;47738:16:::1;47746:7;47738;:16::i;:::-;47730:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;47836:9;47814:10;:19;47825:7;47814:19;;;;;;;;;;;:31;;;;;;;;;;;;:::i;:::-;;47619:234:::0;;:::o;1037:127::-;1144:1;1126:7;:14;;;:19;;;;;;;;;;;1037:127;:::o;33944:439::-;34038:1;34024:16;;:2;:16;;;;34016:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;34097:16;34105:7;34097;:16::i;:::-;34096:17;34088:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;34159:45;34188:1;34192:2;34196:7;34159:20;:45::i;:::-;34234:1;34217:9;:13;34227:2;34217:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;34265:2;34246:7;:16;34254:7;34246:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;34310:7;34306:2;34285:33;;34302:1;34285:33;;;;;;;;;;;;34331:44;34359:1;34363:2;34367:7;34331:19;:44::i;:::-;33944:439;;:::o;32052:127::-;32117:4;32169:1;32141:30;;:7;:16;32149:7;32141:16;;;;;;;;;;;;;;;;;;;;;:30;;;;32134:37;;32052:127;;;:::o;38958:126::-;;;;:::o;39469:125::-;;;;:::o;44527:117::-;44616:20;44628:7;44616:11;:20::i;:::-;44527:117;:::o;37533:853::-;37687:4;37708:15;:2;:13;;;:15::i;:::-;37704:675;;;37760:2;37744:36;;;37781:12;:10;:12::i;:::-;37795:4;37801:7;37810:4;37744:71;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;37740:584;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38002:1;37985:6;:13;:18;37981:328;;;38028:60;;;;;;;;;;:::i;:::-;;;;;;;;37981:328;38259:6;38253:13;38244:6;38240:2;38236:15;38229:38;37740:584;37876:41;;;37866:51;;;:6;:51;;;;37859:58;;;;;37704:675;38363:4;38356:11;;37533:853;;;;;;;:::o;42961:109::-;43013:13;43046:16;43039:23;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42961:109;:::o;27690:281::-;27763:13;27789:23;27804:7;27789:14;:23::i;:::-;27825:21;27849:10;:8;:10::i;:::-;27825:34;;27901:1;27883:7;27877:21;:25;:86;;;;;;;;;;;;;;;;;27929:7;27938:18;:7;:16;:18::i;:::-;27912:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;27877:86;27870:93;;;27690:281;;;:::o;33289:319::-;33418:18;33424:2;33428:7;33418:5;:18::i;:::-;33469:53;33500:1;33504:2;33508:7;33517:4;33469:22;:53::i;:::-;33447:153;;;;;;;;;;;;:::i;:::-;;;;;;;;;33289:319;;;:::o;41363:206::-;41432:20;41444:7;41432:11;:20::i;:::-;41506:1;41475:10;:19;41486:7;41475:19;;;;;;;;;;;41469:33;;;;;:::i;:::-;;;:38;41465:97;;41531:10;:19;41542:7;41531:19;;;;;;;;;;;;41524:26;;;;:::i;:::-;41465:97;41363:206;:::o;8885:326::-;8945:4;9202:1;9180:7;:19;;;:23;9173:30;;8885:326;;;:::o;1950:723::-;2006:13;2236:1;2227:5;:10;2223:53;;;2254:10;;;;;;;;;;;;;;;;;;;;;2223:53;2286:12;2301:5;2286:20;;2317:14;2342:78;2357:1;2349:4;:9;2342:78;;2375:8;;;;;:::i;:::-;;;;2406:2;2398:10;;;;;:::i;:::-;;;2342:78;;;2430:19;2462:6;2452:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2430:39;;2480:154;2496:1;2487:5;:10;2480:154;;2524:1;2514:11;;;;;:::i;:::-;;;2591:2;2583:5;:10;;;;:::i;:::-;2570:2;:24;;;;:::i;:::-;2557:39;;2540:6;2547;2540:14;;;;;;;;:::i;:::-;;;;;:56;;;;;;;;;;;2620:2;2611:11;;;;;:::i;:::-;;;2480:154;;;2658:6;2644:21;;;;;1950:723;;;;:::o;34612:420::-;34672:13;34688:23;34703:7;34688:14;:23::i;:::-;34672:39;;34724:48;34745:5;34760:1;34764:7;34724:20;:48::i;:::-;34813:29;34830:1;34834:7;34813:8;:29::i;:::-;34875:1;34855:9;:16;34865:5;34855:16;;;;;;;;;;;;;;;;:21;;;;;;;:::i;:::-;;;;;;;;34894:7;:16;34902:7;34894:16;;;;;;;;;;;;34887:23;;;;;;;;;;;34956:7;34952:1;34928:36;;34937:5;34928:36;;;;;;;;;;;;34977:47;34997:5;35012:1;35016:7;34977:19;:47::i;:::-;34661:371;34612:420;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:410:1:-;84:5;109:65;125:48;166:6;125:48;:::i;:::-;109:65;:::i;:::-;100:74;;197:6;190:5;183:21;235:4;228:5;224:16;273:3;264:6;259:3;255:16;252:25;249:112;;;280:79;;:::i;:::-;249:112;370:41;404:6;399:3;394;370:41;:::i;:::-;90:327;7:410;;;;;:::o;423:412::-;501:5;526:66;542:49;584:6;542:49;:::i;:::-;526:66;:::i;:::-;517:75;;615:6;608:5;601:21;653:4;646:5;642:16;691:3;682:6;677:3;673:16;670:25;667:112;;;698:79;;:::i;:::-;667:112;788:41;822:6;817:3;812;788:41;:::i;:::-;507:328;423:412;;;;;:::o;841:139::-;887:5;925:6;912:20;903:29;;941:33;968:5;941:33;:::i;:::-;841:139;;;;:::o;1003:568::-;1076:8;1086:6;1136:3;1129:4;1121:6;1117:17;1113:27;1103:122;;1144:79;;:::i;:::-;1103:122;1257:6;1244:20;1234:30;;1287:18;1279:6;1276:30;1273:117;;;1309:79;;:::i;:::-;1273:117;1423:4;1415:6;1411:17;1399:29;;1477:3;1469:4;1461:6;1457:17;1447:8;1443:32;1440:41;1437:128;;;1484:79;;:::i;:::-;1437:128;1003:568;;;;;:::o;1594:::-;1667:8;1677:6;1727:3;1720:4;1712:6;1708:17;1704:27;1694:122;;1735:79;;:::i;:::-;1694:122;1848:6;1835:20;1825:30;;1878:18;1870:6;1867:30;1864:117;;;1900:79;;:::i;:::-;1864:117;2014:4;2006:6;2002:17;1990:29;;2068:3;2060:4;2052:6;2048:17;2038:8;2034:32;2031:41;2028:128;;;2075:79;;:::i;:::-;2028:128;1594:568;;;;;:::o;2168:133::-;2211:5;2249:6;2236:20;2227:29;;2265:30;2289:5;2265:30;:::i;:::-;2168:133;;;;:::o;2307:137::-;2352:5;2390:6;2377:20;2368:29;;2406:32;2432:5;2406:32;:::i;:::-;2307:137;;;;:::o;2450:141::-;2506:5;2537:6;2531:13;2522:22;;2553:32;2579:5;2553:32;:::i;:::-;2450:141;;;;:::o;2610:338::-;2665:5;2714:3;2707:4;2699:6;2695:17;2691:27;2681:122;;2722:79;;:::i;:::-;2681:122;2839:6;2826:20;2864:78;2938:3;2930:6;2923:4;2915:6;2911:17;2864:78;:::i;:::-;2855:87;;2671:277;2610:338;;;;:::o;2968:340::-;3024:5;3073:3;3066:4;3058:6;3054:17;3050:27;3040:122;;3081:79;;:::i;:::-;3040:122;3198:6;3185:20;3223:79;3298:3;3290:6;3283:4;3275:6;3271:17;3223:79;:::i;:::-;3214:88;;3030:278;2968:340;;;;:::o;3314:139::-;3360:5;3398:6;3385:20;3376:29;;3414:33;3441:5;3414:33;:::i;:::-;3314:139;;;;:::o;3459:329::-;3518:6;3567:2;3555:9;3546:7;3542:23;3538:32;3535:119;;;3573:79;;:::i;:::-;3535:119;3693:1;3718:53;3763:7;3754:6;3743:9;3739:22;3718:53;:::i;:::-;3708:63;;3664:117;3459:329;;;;:::o;3794:474::-;3862:6;3870;3919:2;3907:9;3898:7;3894:23;3890:32;3887:119;;;3925:79;;:::i;:::-;3887:119;4045:1;4070:53;4115:7;4106:6;4095:9;4091:22;4070:53;:::i;:::-;4060:63;;4016:117;4172:2;4198:53;4243:7;4234:6;4223:9;4219:22;4198:53;:::i;:::-;4188:63;;4143:118;3794:474;;;;;:::o;4274:619::-;4351:6;4359;4367;4416:2;4404:9;4395:7;4391:23;4387:32;4384:119;;;4422:79;;:::i;:::-;4384:119;4542:1;4567:53;4612:7;4603:6;4592:9;4588:22;4567:53;:::i;:::-;4557:63;;4513:117;4669:2;4695:53;4740:7;4731:6;4720:9;4716:22;4695:53;:::i;:::-;4685:63;;4640:118;4797:2;4823:53;4868:7;4859:6;4848:9;4844:22;4823:53;:::i;:::-;4813:63;;4768:118;4274:619;;;;;:::o;4899:943::-;4994:6;5002;5010;5018;5067:3;5055:9;5046:7;5042:23;5038:33;5035:120;;;5074:79;;:::i;:::-;5035:120;5194:1;5219:53;5264:7;5255:6;5244:9;5240:22;5219:53;:::i;:::-;5209:63;;5165:117;5321:2;5347:53;5392:7;5383:6;5372:9;5368:22;5347:53;:::i;:::-;5337:63;;5292:118;5449:2;5475:53;5520:7;5511:6;5500:9;5496:22;5475:53;:::i;:::-;5465:63;;5420:118;5605:2;5594:9;5590:18;5577:32;5636:18;5628:6;5625:30;5622:117;;;5658:79;;:::i;:::-;5622:117;5763:62;5817:7;5808:6;5797:9;5793:22;5763:62;:::i;:::-;5753:72;;5548:287;4899:943;;;;;;;:::o;5848:468::-;5913:6;5921;5970:2;5958:9;5949:7;5945:23;5941:32;5938:119;;;5976:79;;:::i;:::-;5938:119;6096:1;6121:53;6166:7;6157:6;6146:9;6142:22;6121:53;:::i;:::-;6111:63;;6067:117;6223:2;6249:50;6291:7;6282:6;6271:9;6267:22;6249:50;:::i;:::-;6239:60;;6194:115;5848:468;;;;;:::o;6322:474::-;6390:6;6398;6447:2;6435:9;6426:7;6422:23;6418:32;6415:119;;;6453:79;;:::i;:::-;6415:119;6573:1;6598:53;6643:7;6634:6;6623:9;6619:22;6598:53;:::i;:::-;6588:63;;6544:117;6700:2;6726:53;6771:7;6762:6;6751:9;6747:22;6726:53;:::i;:::-;6716:63;;6671:118;6322:474;;;;;:::o;6802:799::-;6889:6;6897;6905;6954:2;6942:9;6933:7;6929:23;6925:32;6922:119;;;6960:79;;:::i;:::-;6922:119;7080:1;7105:53;7150:7;7141:6;7130:9;7126:22;7105:53;:::i;:::-;7095:63;;7051:117;7207:2;7233:53;7278:7;7269:6;7258:9;7254:22;7233:53;:::i;:::-;7223:63;;7178:118;7363:2;7352:9;7348:18;7335:32;7394:18;7386:6;7383:30;7380:117;;;7416:79;;:::i;:::-;7380:117;7521:63;7576:7;7567:6;7556:9;7552:22;7521:63;:::i;:::-;7511:73;;7306:288;6802:799;;;;;:::o;7607:559::-;7693:6;7701;7750:2;7738:9;7729:7;7725:23;7721:32;7718:119;;;7756:79;;:::i;:::-;7718:119;7904:1;7893:9;7889:17;7876:31;7934:18;7926:6;7923:30;7920:117;;;7956:79;;:::i;:::-;7920:117;8069:80;8141:7;8132:6;8121:9;8117:22;8069:80;:::i;:::-;8051:98;;;;7847:312;7607:559;;;;;:::o;8172:1309::-;8330:6;8338;8346;8354;8362;8370;8419:2;8407:9;8398:7;8394:23;8390:32;8387:119;;;8425:79;;:::i;:::-;8387:119;8573:1;8562:9;8558:17;8545:31;8603:18;8595:6;8592:30;8589:117;;;8625:79;;:::i;:::-;8589:117;8738:80;8810:7;8801:6;8790:9;8786:22;8738:80;:::i;:::-;8720:98;;;;8516:312;8895:2;8884:9;8880:18;8867:32;8926:18;8918:6;8915:30;8912:117;;;8948:79;;:::i;:::-;8912:117;9061:80;9133:7;9124:6;9113:9;9109:22;9061:80;:::i;:::-;9043:98;;;;8838:313;9218:2;9207:9;9203:18;9190:32;9249:18;9241:6;9238:30;9235:117;;;9271:79;;:::i;:::-;9235:117;9384:80;9456:7;9447:6;9436:9;9432:22;9384:80;:::i;:::-;9366:98;;;;9161:313;8172:1309;;;;;;;;:::o;9487:323::-;9543:6;9592:2;9580:9;9571:7;9567:23;9563:32;9560:119;;;9598:79;;:::i;:::-;9560:119;9718:1;9743:50;9785:7;9776:6;9765:9;9761:22;9743:50;:::i;:::-;9733:60;;9689:114;9487:323;;;;:::o;9816:327::-;9874:6;9923:2;9911:9;9902:7;9898:23;9894:32;9891:119;;;9929:79;;:::i;:::-;9891:119;10049:1;10074:52;10118:7;10109:6;10098:9;10094:22;10074:52;:::i;:::-;10064:62;;10020:116;9816:327;;;;:::o;10149:349::-;10218:6;10267:2;10255:9;10246:7;10242:23;10238:32;10235:119;;;10273:79;;:::i;:::-;10235:119;10393:1;10418:63;10473:7;10464:6;10453:9;10449:22;10418:63;:::i;:::-;10408:73;;10364:127;10149:349;;;;:::o;10504:509::-;10573:6;10622:2;10610:9;10601:7;10597:23;10593:32;10590:119;;;10628:79;;:::i;:::-;10590:119;10776:1;10765:9;10761:17;10748:31;10806:18;10798:6;10795:30;10792:117;;;10828:79;;:::i;:::-;10792:117;10933:63;10988:7;10979:6;10968:9;10964:22;10933:63;:::i;:::-;10923:73;;10719:287;10504:509;;;;:::o;11019:329::-;11078:6;11127:2;11115:9;11106:7;11102:23;11098:32;11095:119;;;11133:79;;:::i;:::-;11095:119;11253:1;11278:53;11323:7;11314:6;11303:9;11299:22;11278:53;:::i;:::-;11268:63;;11224:117;11019:329;;;;:::o;11354:474::-;11422:6;11430;11479:2;11467:9;11458:7;11454:23;11450:32;11447:119;;;11485:79;;:::i;:::-;11447:119;11605:1;11630:53;11675:7;11666:6;11655:9;11651:22;11630:53;:::i;:::-;11620:63;;11576:117;11732:2;11758:53;11803:7;11794:6;11783:9;11779:22;11758:53;:::i;:::-;11748:63;;11703:118;11354:474;;;;;:::o;11834:179::-;11903:10;11924:46;11966:3;11958:6;11924:46;:::i;:::-;12002:4;11997:3;11993:14;11979:28;;11834:179;;;;:::o;12019:118::-;12106:24;12124:5;12106:24;:::i;:::-;12101:3;12094:37;12019:118;;:::o;12173:732::-;12292:3;12321:54;12369:5;12321:54;:::i;:::-;12391:86;12470:6;12465:3;12391:86;:::i;:::-;12384:93;;12501:56;12551:5;12501:56;:::i;:::-;12580:7;12611:1;12596:284;12621:6;12618:1;12615:13;12596:284;;;12697:6;12691:13;12724:63;12783:3;12768:13;12724:63;:::i;:::-;12717:70;;12810:60;12863:6;12810:60;:::i;:::-;12800:70;;12656:224;12643:1;12640;12636:9;12631:14;;12596:284;;;12600:14;12896:3;12889:10;;12297:608;;;12173:732;;;;:::o;12911:109::-;12992:21;13007:5;12992:21;:::i;:::-;12987:3;12980:34;12911:109;;:::o;13026:360::-;13112:3;13140:38;13172:5;13140:38;:::i;:::-;13194:70;13257:6;13252:3;13194:70;:::i;:::-;13187:77;;13273:52;13318:6;13313:3;13306:4;13299:5;13295:16;13273:52;:::i;:::-;13350:29;13372:6;13350:29;:::i;:::-;13345:3;13341:39;13334:46;;13116:270;13026:360;;;;:::o;13392:364::-;13480:3;13508:39;13541:5;13508:39;:::i;:::-;13563:71;13627:6;13622:3;13563:71;:::i;:::-;13556:78;;13643:52;13688:6;13683:3;13676:4;13669:5;13665:16;13643:52;:::i;:::-;13720:29;13742:6;13720:29;:::i;:::-;13715:3;13711:39;13704:46;;13484:272;13392:364;;;;:::o;13762:377::-;13868:3;13896:39;13929:5;13896:39;:::i;:::-;13951:89;14033:6;14028:3;13951:89;:::i;:::-;13944:96;;14049:52;14094:6;14089:3;14082:4;14075:5;14071:16;14049:52;:::i;:::-;14126:6;14121:3;14117:16;14110:23;;13872:267;13762:377;;;;:::o;14145:366::-;14287:3;14308:67;14372:2;14367:3;14308:67;:::i;:::-;14301:74;;14384:93;14473:3;14384:93;:::i;:::-;14502:2;14497:3;14493:12;14486:19;;14145:366;;;:::o;14517:::-;14659:3;14680:67;14744:2;14739:3;14680:67;:::i;:::-;14673:74;;14756:93;14845:3;14756:93;:::i;:::-;14874:2;14869:3;14865:12;14858:19;;14517:366;;;:::o;14889:::-;15031:3;15052:67;15116:2;15111:3;15052:67;:::i;:::-;15045:74;;15128:93;15217:3;15128:93;:::i;:::-;15246:2;15241:3;15237:12;15230:19;;14889:366;;;:::o;15261:::-;15403:3;15424:67;15488:2;15483:3;15424:67;:::i;:::-;15417:74;;15500:93;15589:3;15500:93;:::i;:::-;15618:2;15613:3;15609:12;15602:19;;15261:366;;;:::o;15633:::-;15775:3;15796:67;15860:2;15855:3;15796:67;:::i;:::-;15789:74;;15872:93;15961:3;15872:93;:::i;:::-;15990:2;15985:3;15981:12;15974:19;;15633:366;;;:::o;16005:::-;16147:3;16168:67;16232:2;16227:3;16168:67;:::i;:::-;16161:74;;16244:93;16333:3;16244:93;:::i;:::-;16362:2;16357:3;16353:12;16346:19;;16005:366;;;:::o;16377:::-;16519:3;16540:67;16604:2;16599:3;16540:67;:::i;:::-;16533:74;;16616:93;16705:3;16616:93;:::i;:::-;16734:2;16729:3;16725:12;16718:19;;16377:366;;;:::o;16749:::-;16891:3;16912:67;16976:2;16971:3;16912:67;:::i;:::-;16905:74;;16988:93;17077:3;16988:93;:::i;:::-;17106:2;17101:3;17097:12;17090:19;;16749:366;;;:::o;17121:::-;17263:3;17284:67;17348:2;17343:3;17284:67;:::i;:::-;17277:74;;17360:93;17449:3;17360:93;:::i;:::-;17478:2;17473:3;17469:12;17462:19;;17121:366;;;:::o;17493:::-;17635:3;17656:67;17720:2;17715:3;17656:67;:::i;:::-;17649:74;;17732:93;17821:3;17732:93;:::i;:::-;17850:2;17845:3;17841:12;17834:19;;17493:366;;;:::o;17865:::-;18007:3;18028:67;18092:2;18087:3;18028:67;:::i;:::-;18021:74;;18104:93;18193:3;18104:93;:::i;:::-;18222:2;18217:3;18213:12;18206:19;;17865:366;;;:::o;18237:::-;18379:3;18400:67;18464:2;18459:3;18400:67;:::i;:::-;18393:74;;18476:93;18565:3;18476:93;:::i;:::-;18594:2;18589:3;18585:12;18578:19;;18237:366;;;:::o;18609:::-;18751:3;18772:67;18836:2;18831:3;18772:67;:::i;:::-;18765:74;;18848:93;18937:3;18848:93;:::i;:::-;18966:2;18961:3;18957:12;18950:19;;18609:366;;;:::o;18981:::-;19123:3;19144:67;19208:2;19203:3;19144:67;:::i;:::-;19137:74;;19220:93;19309:3;19220:93;:::i;:::-;19338:2;19333:3;19329:12;19322:19;;18981:366;;;:::o;19353:::-;19495:3;19516:67;19580:2;19575:3;19516:67;:::i;:::-;19509:74;;19592:93;19681:3;19592:93;:::i;:::-;19710:2;19705:3;19701:12;19694:19;;19353:366;;;:::o;19725:::-;19867:3;19888:67;19952:2;19947:3;19888:67;:::i;:::-;19881:74;;19964:93;20053:3;19964:93;:::i;:::-;20082:2;20077:3;20073:12;20066:19;;19725:366;;;:::o;20097:::-;20239:3;20260:67;20324:2;20319:3;20260:67;:::i;:::-;20253:74;;20336:93;20425:3;20336:93;:::i;:::-;20454:2;20449:3;20445:12;20438:19;;20097:366;;;:::o;20469:::-;20611:3;20632:67;20696:2;20691:3;20632:67;:::i;:::-;20625:74;;20708:93;20797:3;20708:93;:::i;:::-;20826:2;20821:3;20817:12;20810:19;;20469:366;;;:::o;20841:::-;20983:3;21004:67;21068:2;21063:3;21004:67;:::i;:::-;20997:74;;21080:93;21169:3;21080:93;:::i;:::-;21198:2;21193:3;21189:12;21182:19;;20841:366;;;:::o;21213:398::-;21372:3;21393:83;21474:1;21469:3;21393:83;:::i;:::-;21386:90;;21485:93;21574:3;21485:93;:::i;:::-;21603:1;21598:3;21594:11;21587:18;;21213:398;;;:::o;21617:366::-;21759:3;21780:67;21844:2;21839:3;21780:67;:::i;:::-;21773:74;;21856:93;21945:3;21856:93;:::i;:::-;21974:2;21969:3;21965:12;21958:19;;21617:366;;;:::o;21989:::-;22131:3;22152:67;22216:2;22211:3;22152:67;:::i;:::-;22145:74;;22228:93;22317:3;22228:93;:::i;:::-;22346:2;22341:3;22337:12;22330:19;;21989:366;;;:::o;22361:::-;22503:3;22524:67;22588:2;22583:3;22524:67;:::i;:::-;22517:74;;22600:93;22689:3;22600:93;:::i;:::-;22718:2;22713:3;22709:12;22702:19;;22361:366;;;:::o;22733:108::-;22810:24;22828:5;22810:24;:::i;:::-;22805:3;22798:37;22733:108;;:::o;22847:118::-;22934:24;22952:5;22934:24;:::i;:::-;22929:3;22922:37;22847:118;;:::o;22971:435::-;23151:3;23173:95;23264:3;23255:6;23173:95;:::i;:::-;23166:102;;23285:95;23376:3;23367:6;23285:95;:::i;:::-;23278:102;;23397:3;23390:10;;22971:435;;;;;:::o;23412:379::-;23596:3;23618:147;23761:3;23618:147;:::i;:::-;23611:154;;23782:3;23775:10;;23412:379;;;:::o;23797:222::-;23890:4;23928:2;23917:9;23913:18;23905:26;;23941:71;24009:1;23998:9;23994:17;23985:6;23941:71;:::i;:::-;23797:222;;;;:::o;24025:640::-;24220:4;24258:3;24247:9;24243:19;24235:27;;24272:71;24340:1;24329:9;24325:17;24316:6;24272:71;:::i;:::-;24353:72;24421:2;24410:9;24406:18;24397:6;24353:72;:::i;:::-;24435;24503:2;24492:9;24488:18;24479:6;24435:72;:::i;:::-;24554:9;24548:4;24544:20;24539:2;24528:9;24524:18;24517:48;24582:76;24653:4;24644:6;24582:76;:::i;:::-;24574:84;;24025:640;;;;;;;:::o;24671:373::-;24814:4;24852:2;24841:9;24837:18;24829:26;;24901:9;24895:4;24891:20;24887:1;24876:9;24872:17;24865:47;24929:108;25032:4;25023:6;24929:108;:::i;:::-;24921:116;;24671:373;;;;:::o;25050:210::-;25137:4;25175:2;25164:9;25160:18;25152:26;;25188:65;25250:1;25239:9;25235:17;25226:6;25188:65;:::i;:::-;25050:210;;;;:::o;25266:313::-;25379:4;25417:2;25406:9;25402:18;25394:26;;25466:9;25460:4;25456:20;25452:1;25441:9;25437:17;25430:47;25494:78;25567:4;25558:6;25494:78;:::i;:::-;25486:86;;25266:313;;;;:::o;25585:419::-;25751:4;25789:2;25778:9;25774:18;25766:26;;25838:9;25832:4;25828:20;25824:1;25813:9;25809:17;25802:47;25866:131;25992:4;25866:131;:::i;:::-;25858:139;;25585:419;;;:::o;26010:::-;26176:4;26214:2;26203:9;26199:18;26191:26;;26263:9;26257:4;26253:20;26249:1;26238:9;26234:17;26227:47;26291:131;26417:4;26291:131;:::i;:::-;26283:139;;26010:419;;;:::o;26435:::-;26601:4;26639:2;26628:9;26624:18;26616:26;;26688:9;26682:4;26678:20;26674:1;26663:9;26659:17;26652:47;26716:131;26842:4;26716:131;:::i;:::-;26708:139;;26435:419;;;:::o;26860:::-;27026:4;27064:2;27053:9;27049:18;27041:26;;27113:9;27107:4;27103:20;27099:1;27088:9;27084:17;27077:47;27141:131;27267:4;27141:131;:::i;:::-;27133:139;;26860:419;;;:::o;27285:::-;27451:4;27489:2;27478:9;27474:18;27466:26;;27538:9;27532:4;27528:20;27524:1;27513:9;27509:17;27502:47;27566:131;27692:4;27566:131;:::i;:::-;27558:139;;27285:419;;;:::o;27710:::-;27876:4;27914:2;27903:9;27899:18;27891:26;;27963:9;27957:4;27953:20;27949:1;27938:9;27934:17;27927:47;27991:131;28117:4;27991:131;:::i;:::-;27983:139;;27710:419;;;:::o;28135:::-;28301:4;28339:2;28328:9;28324:18;28316:26;;28388:9;28382:4;28378:20;28374:1;28363:9;28359:17;28352:47;28416:131;28542:4;28416:131;:::i;:::-;28408:139;;28135:419;;;:::o;28560:::-;28726:4;28764:2;28753:9;28749:18;28741:26;;28813:9;28807:4;28803:20;28799:1;28788:9;28784:17;28777:47;28841:131;28967:4;28841:131;:::i;:::-;28833:139;;28560:419;;;:::o;28985:::-;29151:4;29189:2;29178:9;29174:18;29166:26;;29238:9;29232:4;29228:20;29224:1;29213:9;29209:17;29202:47;29266:131;29392:4;29266:131;:::i;:::-;29258:139;;28985:419;;;:::o;29410:::-;29576:4;29614:2;29603:9;29599:18;29591:26;;29663:9;29657:4;29653:20;29649:1;29638:9;29634:17;29627:47;29691:131;29817:4;29691:131;:::i;:::-;29683:139;;29410:419;;;:::o;29835:::-;30001:4;30039:2;30028:9;30024:18;30016:26;;30088:9;30082:4;30078:20;30074:1;30063:9;30059:17;30052:47;30116:131;30242:4;30116:131;:::i;:::-;30108:139;;29835:419;;;:::o;30260:::-;30426:4;30464:2;30453:9;30449:18;30441:26;;30513:9;30507:4;30503:20;30499:1;30488:9;30484:17;30477:47;30541:131;30667:4;30541:131;:::i;:::-;30533:139;;30260:419;;;:::o;30685:::-;30851:4;30889:2;30878:9;30874:18;30866:26;;30938:9;30932:4;30928:20;30924:1;30913:9;30909:17;30902:47;30966:131;31092:4;30966:131;:::i;:::-;30958:139;;30685:419;;;:::o;31110:::-;31276:4;31314:2;31303:9;31299:18;31291:26;;31363:9;31357:4;31353:20;31349:1;31338:9;31334:17;31327:47;31391:131;31517:4;31391:131;:::i;:::-;31383:139;;31110:419;;;:::o;31535:::-;31701:4;31739:2;31728:9;31724:18;31716:26;;31788:9;31782:4;31778:20;31774:1;31763:9;31759:17;31752:47;31816:131;31942:4;31816:131;:::i;:::-;31808:139;;31535:419;;;:::o;31960:::-;32126:4;32164:2;32153:9;32149:18;32141:26;;32213:9;32207:4;32203:20;32199:1;32188:9;32184:17;32177:47;32241:131;32367:4;32241:131;:::i;:::-;32233:139;;31960:419;;;:::o;32385:::-;32551:4;32589:2;32578:9;32574:18;32566:26;;32638:9;32632:4;32628:20;32624:1;32613:9;32609:17;32602:47;32666:131;32792:4;32666:131;:::i;:::-;32658:139;;32385:419;;;:::o;32810:::-;32976:4;33014:2;33003:9;32999:18;32991:26;;33063:9;33057:4;33053:20;33049:1;33038:9;33034:17;33027:47;33091:131;33217:4;33091:131;:::i;:::-;33083:139;;32810:419;;;:::o;33235:::-;33401:4;33439:2;33428:9;33424:18;33416:26;;33488:9;33482:4;33478:20;33474:1;33463:9;33459:17;33452:47;33516:131;33642:4;33516:131;:::i;:::-;33508:139;;33235:419;;;:::o;33660:::-;33826:4;33864:2;33853:9;33849:18;33841:26;;33913:9;33907:4;33903:20;33899:1;33888:9;33884:17;33877:47;33941:131;34067:4;33941:131;:::i;:::-;33933:139;;33660:419;;;:::o;34085:::-;34251:4;34289:2;34278:9;34274:18;34266:26;;34338:9;34332:4;34328:20;34324:1;34313:9;34309:17;34302:47;34366:131;34492:4;34366:131;:::i;:::-;34358:139;;34085:419;;;:::o;34510:::-;34676:4;34714:2;34703:9;34699:18;34691:26;;34763:9;34757:4;34753:20;34749:1;34738:9;34734:17;34727:47;34791:131;34917:4;34791:131;:::i;:::-;34783:139;;34510:419;;;:::o;34935:222::-;35028:4;35066:2;35055:9;35051:18;35043:26;;35079:71;35147:1;35136:9;35132:17;35123:6;35079:71;:::i;:::-;34935:222;;;;:::o;35163:129::-;35197:6;35224:20;;:::i;:::-;35214:30;;35253:33;35281:4;35273:6;35253:33;:::i;:::-;35163:129;;;:::o;35298:75::-;35331:6;35364:2;35358:9;35348:19;;35298:75;:::o;35379:307::-;35440:4;35530:18;35522:6;35519:30;35516:56;;;35552:18;;:::i;:::-;35516:56;35590:29;35612:6;35590:29;:::i;:::-;35582:37;;35674:4;35668;35664:15;35656:23;;35379:307;;;:::o;35692:308::-;35754:4;35844:18;35836:6;35833:30;35830:56;;;35866:18;;:::i;:::-;35830:56;35904:29;35926:6;35904:29;:::i;:::-;35896:37;;35988:4;35982;35978:15;35970:23;;35692:308;;;:::o;36006:132::-;36073:4;36096:3;36088:11;;36126:4;36121:3;36117:14;36109:22;;36006:132;;;:::o;36144:114::-;36211:6;36245:5;36239:12;36229:22;;36144:114;;;:::o;36264:98::-;36315:6;36349:5;36343:12;36333:22;;36264:98;;;:::o;36368:99::-;36420:6;36454:5;36448:12;36438:22;;36368:99;;;:::o;36473:113::-;36543:4;36575;36570:3;36566:14;36558:22;;36473:113;;;:::o;36592:184::-;36691:11;36725:6;36720:3;36713:19;36765:4;36760:3;36756:14;36741:29;;36592:184;;;;:::o;36782:168::-;36865:11;36899:6;36894:3;36887:19;36939:4;36934:3;36930:14;36915:29;;36782:168;;;;:::o;36956:147::-;37057:11;37094:3;37079:18;;36956:147;;;;:::o;37109:169::-;37193:11;37227:6;37222:3;37215:19;37267:4;37262:3;37258:14;37243:29;;37109:169;;;;:::o;37284:148::-;37386:11;37423:3;37408:18;;37284:148;;;;:::o;37438:305::-;37478:3;37497:20;37515:1;37497:20;:::i;:::-;37492:25;;37531:20;37549:1;37531:20;:::i;:::-;37526:25;;37685:1;37617:66;37613:74;37610:1;37607:81;37604:107;;;37691:18;;:::i;:::-;37604:107;37735:1;37732;37728:9;37721:16;;37438:305;;;;:::o;37749:185::-;37789:1;37806:20;37824:1;37806:20;:::i;:::-;37801:25;;37840:20;37858:1;37840:20;:::i;:::-;37835:25;;37879:1;37869:35;;37884:18;;:::i;:::-;37869:35;37926:1;37923;37919:9;37914:14;;37749:185;;;;:::o;37940:348::-;37980:7;38003:20;38021:1;38003:20;:::i;:::-;37998:25;;38037:20;38055:1;38037:20;:::i;:::-;38032:25;;38225:1;38157:66;38153:74;38150:1;38147:81;38142:1;38135:9;38128:17;38124:105;38121:131;;;38232:18;;:::i;:::-;38121:131;38280:1;38277;38273:9;38262:20;;37940:348;;;;:::o;38294:191::-;38334:4;38354:20;38372:1;38354:20;:::i;:::-;38349:25;;38388:20;38406:1;38388:20;:::i;:::-;38383:25;;38427:1;38424;38421:8;38418:34;;;38432:18;;:::i;:::-;38418:34;38477:1;38474;38470:9;38462:17;;38294:191;;;;:::o;38491:96::-;38528:7;38557:24;38575:5;38557:24;:::i;:::-;38546:35;;38491:96;;;:::o;38593:90::-;38627:7;38670:5;38663:13;38656:21;38645:32;;38593:90;;;:::o;38689:149::-;38725:7;38765:66;38758:5;38754:78;38743:89;;38689:149;;;:::o;38844:126::-;38881:7;38921:42;38914:5;38910:54;38899:65;;38844:126;;;:::o;38976:77::-;39013:7;39042:5;39031:16;;38976:77;;;:::o;39059:154::-;39143:6;39138:3;39133;39120:30;39205:1;39196:6;39191:3;39187:16;39180:27;39059:154;;;:::o;39219:307::-;39287:1;39297:113;39311:6;39308:1;39305:13;39297:113;;;39396:1;39391:3;39387:11;39381:18;39377:1;39372:3;39368:11;39361:39;39333:2;39330:1;39326:10;39321:15;;39297:113;;;39428:6;39425:1;39422:13;39419:101;;;39508:1;39499:6;39494:3;39490:16;39483:27;39419:101;39268:258;39219:307;;;:::o;39532:320::-;39576:6;39613:1;39607:4;39603:12;39593:22;;39660:1;39654:4;39650:12;39681:18;39671:81;;39737:4;39729:6;39725:17;39715:27;;39671:81;39799:2;39791:6;39788:14;39768:18;39765:38;39762:84;;;39818:18;;:::i;:::-;39762:84;39583:269;39532:320;;;:::o;39858:281::-;39941:27;39963:4;39941:27;:::i;:::-;39933:6;39929:40;40071:6;40059:10;40056:22;40035:18;40023:10;40020:34;40017:62;40014:88;;;40082:18;;:::i;:::-;40014:88;40122:10;40118:2;40111:22;39901:238;39858:281;;:::o;40145:233::-;40184:3;40207:24;40225:5;40207:24;:::i;:::-;40198:33;;40253:66;40246:5;40243:77;40240:103;;;40323:18;;:::i;:::-;40240:103;40370:1;40363:5;40359:13;40352:20;;40145:233;;;:::o;40384:176::-;40416:1;40433:20;40451:1;40433:20;:::i;:::-;40428:25;;40467:20;40485:1;40467:20;:::i;:::-;40462:25;;40506:1;40496:35;;40511:18;;:::i;:::-;40496:35;40552:1;40549;40545:9;40540:14;;40384:176;;;;:::o;40566:180::-;40614:77;40611:1;40604:88;40711:4;40708:1;40701:15;40735:4;40732:1;40725:15;40752:180;40800:77;40797:1;40790:88;40897:4;40894:1;40887:15;40921:4;40918:1;40911:15;40938:180;40986:77;40983:1;40976:88;41083:4;41080:1;41073:15;41107:4;41104:1;41097:15;41124:180;41172:77;41169:1;41162:88;41269:4;41266:1;41259:15;41293:4;41290:1;41283:15;41310:180;41358:77;41355:1;41348:88;41455:4;41452:1;41445:15;41479:4;41476:1;41469:15;41496:117;41605:1;41602;41595:12;41619:117;41728:1;41725;41718:12;41742:117;41851:1;41848;41841:12;41865:117;41974:1;41971;41964:12;41988:117;42097:1;42094;42087:12;42111:117;42220:1;42217;42210:12;42234:102;42275:6;42326:2;42322:7;42317:2;42310:5;42306:14;42302:28;42292:38;;42234:102;;;:::o;42342:162::-;42482:14;42478:1;42470:6;42466:14;42459:38;42342:162;:::o;42510:169::-;42650:21;42646:1;42638:6;42634:14;42627:45;42510:169;:::o;42685:237::-;42825:34;42821:1;42813:6;42809:14;42802:58;42894:20;42889:2;42881:6;42877:15;42870:45;42685:237;:::o;42928:225::-;43068:34;43064:1;43056:6;43052:14;43045:58;43137:8;43132:2;43124:6;43120:15;43113:33;42928:225;:::o;43159:224::-;43299:34;43295:1;43287:6;43283:14;43276:58;43368:7;43363:2;43355:6;43351:15;43344:32;43159:224;:::o;43389:178::-;43529:30;43525:1;43517:6;43513:14;43506:54;43389:178;:::o;43573:170::-;43713:22;43709:1;43701:6;43697:14;43690:46;43573:170;:::o;43749:182::-;43889:34;43885:1;43877:6;43873:14;43866:58;43749:182;:::o;43937:223::-;44077:34;44073:1;44065:6;44061:14;44054:58;44146:6;44141:2;44133:6;44129:15;44122:31;43937:223;:::o;44166:175::-;44306:27;44302:1;44294:6;44290:14;44283:51;44166:175;:::o;44347:228::-;44487:34;44483:1;44475:6;44471:14;44464:58;44556:11;44551:2;44543:6;44539:15;44532:36;44347:228;:::o;44581:249::-;44721:34;44717:1;44709:6;44705:14;44698:58;44790:32;44785:2;44777:6;44773:15;44766:57;44581:249;:::o;44836:182::-;44976:34;44972:1;44964:6;44960:14;44953:58;44836:182;:::o;45024:231::-;45164:34;45160:1;45152:6;45148:14;45141:58;45233:14;45228:2;45220:6;45216:15;45209:39;45024:231;:::o;45261:182::-;45401:34;45397:1;45389:6;45385:14;45378:58;45261:182;:::o;45449:173::-;45589:25;45585:1;45577:6;45573:14;45566:49;45449:173;:::o;45628:170::-;45768:22;45764:1;45756:6;45752:14;45745:46;45628:170;:::o;45804:174::-;45944:26;45940:1;45932:6;45928:14;45921:50;45804:174;:::o;45984:220::-;46124:34;46120:1;46112:6;46108:14;46101:58;46193:3;46188:2;46180:6;46176:15;46169:28;45984:220;:::o;46210:114::-;;:::o;46330:170::-;46470:22;46466:1;46458:6;46454:14;46447:46;46330:170;:::o;46506:233::-;46646:34;46642:1;46634:6;46630:14;46623:58;46715:16;46710:2;46702:6;46698:15;46691:41;46506:233;:::o;46745:169::-;46885:21;46881:1;46873:6;46869:14;46862:45;46745:169;:::o;46920:122::-;46993:24;47011:5;46993:24;:::i;:::-;46986:5;46983:35;46973:63;;47032:1;47029;47022:12;46973:63;46920:122;:::o;47048:116::-;47118:21;47133:5;47118:21;:::i;:::-;47111:5;47108:32;47098:60;;47154:1;47151;47144:12;47098:60;47048:116;:::o;47170:120::-;47242:23;47259:5;47242:23;:::i;:::-;47235:5;47232:34;47222:62;;47280:1;47277;47270:12;47222:62;47170:120;:::o;47296:122::-;47369:24;47387:5;47369:24;:::i;:::-;47362:5;47359:35;47349:63;;47408:1;47405;47398:12;47349:63;47296:122;:::o
Swarm Source
ipfs://09a878806e2d355426566896a44749276510270db9f21e44195f3d9810aa9416
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.