Overview
TokenID
793
Total Transfers
-
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
UserBanner
Compiler Version
v0.8.13+commit.abaa5c0e
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-02-02 */ pragma solidity >=0.4.16 <0.9.0; pragma solidity >=0.8.0; //a // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) /** * @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; } } //a // OpenZeppelin Contracts v4.4.1 (access/Ownable.sol) /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } //a // OpenZeppelin Contracts v4.4.1 (utils/Strings.sol) /** * @dev String operations. */ library Strings { bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef"; /** * @dev Converts a `uint256` to its ASCII `string` decimal representation. */ function toString(uint256 value) internal pure returns (string memory) { // Inspired by OraclizeAPI's implementation - MIT licence // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol if (value == 0) { return "0"; } uint256 temp = value; uint256 digits; while (temp != 0) { digits++; temp /= 10; } bytes memory buffer = new bytes(digits); while (value != 0) { digits -= 1; buffer[digits] = bytes1(uint8(48 + uint256(value % 10))); value /= 10; } return string(buffer); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation. */ function toHexString(uint256 value) internal pure returns (string memory) { if (value == 0) { return "0x00"; } uint256 temp = value; uint256 length = 0; while (temp != 0) { length++; temp >>= 8; } return toHexString(value, length); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length. */ function toHexString(uint256 value, uint256 length) internal pure returns (string memory) { bytes memory buffer = new bytes(2 * length + 2); buffer[0] = "0"; buffer[1] = "x"; for (uint256 i = 2 * length + 1; i > 1; --i) { buffer[i] = _HEX_SYMBOLS[value & 0xf]; value >>= 4; } require(value == 0, "Strings: hex length insufficient"); return string(buffer); } } //a // OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol) /** * @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); } //a // OpenZeppelin Contracts v4.4.1 (token/ERC721/IERC721.sol) /** * @dev Required interface of an ERC721 compliant contract. */ interface IERC721 is IERC165 { /** * @dev Emitted when `tokenId` token is transferred from `from` to `to`. */ event Transfer(address indexed from, address indexed to, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token. */ event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets. */ event ApprovalForAll(address indexed owner, address indexed operator, bool approved); /** * @dev Returns the number of tokens in ``owner``'s account. */ function balanceOf(address owner) external view returns (uint256 balance); /** * @dev Returns the owner of the `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function ownerOf(uint256 tokenId) external view returns (address owner); /** * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients * are aware of the ERC721 protocol to prevent tokens from being forever locked. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Transfers `tokenId` token from `from` to `to`. * * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Gives permission to `to` to transfer `tokenId` token to another account. * The approval is cleared when the token is transferred. * * Only a single account can be approved at a time, so approving the zero address clears previous approvals. * * Requirements: * * - The caller must own the token or be an approved operator. * - `tokenId` must exist. * * Emits an {Approval} event. */ function approve(address to, uint256 tokenId) external; /** * @dev Returns the account approved for `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function getApproved(uint256 tokenId) external view returns (address operator); /** * @dev Approve or remove `operator` as an operator for the caller. * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. * * Requirements: * * - The `operator` cannot be the caller. * * Emits an {ApprovalForAll} event. */ function setApprovalForAll(address operator, bool _approved) external; /** * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`. * * See {setApprovalForAll} */ function isApprovedForAll(address owner, address operator) external view returns (bool); /** * @dev Safely transfers `tokenId` token from `from` to `to`. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId, bytes calldata data ) external; } //a // OpenZeppelin Contracts v4.4.1 (token/ERC721/IERC721Receiver.sol) /** * @title ERC721 token receiver interface * @dev Interface for any contract that wants to support safeTransfers * from ERC721 asset contracts. */ interface IERC721Receiver { /** * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} * by `operator` from `from`, this function is called. * * It must return its Solidity selector to confirm the token transfer. * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. * * The selector can be obtained in Solidity with `IERC721.onERC721Received.selector`. */ function onERC721Received( address operator, address from, uint256 tokenId, bytes calldata data ) external returns (bytes4); } //a // OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol) /** * @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); } //a // OpenZeppelin Contracts v4.4.1 (utils/Address.sol) /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== * * [IMPORTANT] * ==== * You shouldn't rely on `isContract` to protect against flash loan attacks! * * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract * constructor. * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize/address.code.length, which returns 0 // for contracts in construction, since the code is only stored at the end // of the constructor execution. return account.code.length > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain `call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the * revert reason using the provided one. * * _Available since v4.3._ */ function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } //a // OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol) /** * @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; } } //a // OpenZeppelin Contracts v4.4.1 (token/ERC721/ERC721.sol) /** * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including * the Metadata extension, but not including the Enumerable extension, which is available separately as * {ERC721Enumerable}. */ contract ERC721 is Context, ERC165, IERC721, IERC721Metadata { using Address for address; using Strings for uint256; // Token name string private _name; // Token symbol string private _symbol; // Mapping from token ID to owner address mapping(uint256 => address) private _owners; // Mapping owner address to token count mapping(address => uint256) private _balances; // Mapping from token ID to approved address mapping(uint256 => address) private _tokenApprovals; // Mapping from owner to operator approvals mapping(address => mapping(address => bool)) private _operatorApprovals; /** * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection. */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) { return interfaceId == type(IERC721).interfaceId || interfaceId == type(IERC721Metadata).interfaceId || super.supportsInterface(interfaceId); } /** * @dev See {IERC721-balanceOf}. */ function balanceOf(address owner) public view virtual override returns (uint256) { require(owner != address(0), "ERC721: balance query for the zero address"); return _balances[owner]; } /** * @dev See {IERC721-ownerOf}. */ function ownerOf(uint256 tokenId) public view virtual override returns (address) { address owner = _owners[tokenId]; require(owner != address(0), "ERC721: owner query for nonexistent token"); return owner; } /** * @dev See {IERC721Metadata-name}. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev See {IERC721Metadata-symbol}. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev See {IERC721Metadata-tokenURI}. */ function tokenURI(uint256 tokenId) public view virtual override returns (string memory) { require(_exists(tokenId), "ERC721Metadata: URI query for nonexistent token"); string memory baseURI = _baseURI(); return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : ""; } /** * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each * token will be the concatenation of the `baseURI` and the `tokenId`. Empty * by default, can be overriden in child contracts. */ function _baseURI() internal view virtual returns (string memory) { return ""; } /** * @dev See {IERC721-approve}. */ function approve(address to, uint256 tokenId) public virtual override { address owner = ERC721.ownerOf(tokenId); require(to != owner, "ERC721: approval to current owner"); require( _msgSender() == owner || isApprovedForAll(owner, _msgSender()), "ERC721: approve caller is not owner nor approved for all" ); _approve(to, tokenId); } /** * @dev See {IERC721-getApproved}. */ function getApproved(uint256 tokenId) public view virtual override returns (address) { require(_exists(tokenId), "ERC721: approved query for nonexistent token"); return _tokenApprovals[tokenId]; } /** * @dev See {IERC721-setApprovalForAll}. */ function setApprovalForAll(address operator, bool approved) public virtual override { _setApprovalForAll(_msgSender(), operator, approved); } /** * @dev See {IERC721-isApprovedForAll}. */ function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) { return _operatorApprovals[owner][operator]; } /** * @dev See {IERC721-transferFrom}. */ function transferFrom( address from, address to, uint256 tokenId ) public virtual override { //solhint-disable-next-line max-line-length require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved"); _transfer(from, to, tokenId); } /** * @dev See {IERC721-safeTransferFrom}. */ function safeTransferFrom( address from, address to, uint256 tokenId ) public virtual override { safeTransferFrom(from, to, tokenId, ""); } /** * @dev See {IERC721-safeTransferFrom}. */ function safeTransferFrom( address from, address to, uint256 tokenId, bytes memory _data ) public virtual override { require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved"); _safeTransfer(from, to, tokenId, _data); } /** * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients * are aware of the ERC721 protocol to prevent tokens from being forever locked. * * `_data` is additional data, it has no specified format and it is sent in call to `to`. * * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g. * implement alternative mechanisms to perform token transfer, such as signature-based. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function _safeTransfer( address from, address to, uint256 tokenId, bytes memory _data ) internal virtual { _transfer(from, to, tokenId); require(_checkOnERC721Received(from, to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer"); } /** * @dev Returns whether `tokenId` exists. * * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}. * * Tokens start existing when they are minted (`_mint`), * and stop existing when they are burned (`_burn`). */ function _exists(uint256 tokenId) internal view virtual returns (bool) { return _owners[tokenId] != address(0); } /** * @dev Returns whether `spender` is allowed to manage `tokenId`. * * Requirements: * * - `tokenId` must exist. */ function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) { require(_exists(tokenId), "ERC721: operator query for nonexistent token"); address owner = ERC721.ownerOf(tokenId); return (spender == owner || getApproved(tokenId) == spender || isApprovedForAll(owner, spender)); } /** * @dev Safely mints `tokenId` and transfers it to `to`. * * Requirements: * * - `tokenId` must not exist. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function _safeMint(address to, uint256 tokenId) internal virtual { _safeMint(to, tokenId, ""); } /** * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is * forwarded in {IERC721Receiver-onERC721Received} to contract recipients. */ function _safeMint( address to, uint256 tokenId, bytes memory _data ) internal virtual { _mint(to, tokenId); require( _checkOnERC721Received(address(0), to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer" ); } /** * @dev Mints `tokenId` and transfers it to `to`. * * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible * * Requirements: * * - `tokenId` must not exist. * - `to` cannot be the zero address. * * Emits a {Transfer} event. */ function _mint(address to, uint256 tokenId) internal virtual { require(to != address(0), "ERC721: mint to the zero address"); require(!_exists(tokenId), "ERC721: token already minted"); _beforeTokenTransfer(address(0), to, tokenId); _balances[to] += 1; _owners[tokenId] = to; emit Transfer(address(0), to, tokenId); _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 a {Approval} event. */ function _approve(address to, uint256 tokenId) internal virtual { _tokenApprovals[tokenId] = to; emit Approval(ERC721.ownerOf(tokenId), to, tokenId); } /** * @dev Approve `operator` to operate on all of `owner` tokens * * Emits a {ApprovalForAll} event. */ function _setApprovalForAll( address owner, address operator, bool approved ) internal virtual { require(owner != operator, "ERC721: approve to caller"); _operatorApprovals[owner][operator] = approved; emit ApprovalForAll(owner, operator, approved); } /** * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address. * The call is not executed if the target address is not a contract. * * @param from address representing the previous owner of the given token ID * @param to target address that will receive the tokens * @param tokenId uint256 ID of the token to be transferred * @param _data bytes optional data to send along with the call * @return bool whether the call correctly returned the expected magic value */ function _checkOnERC721Received( address from, address to, uint256 tokenId, bytes memory _data ) private returns (bool) { if (to.isContract()) { try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, _data) returns (bytes4 retval) { return retval == IERC721Receiver.onERC721Received.selector; } catch (bytes memory reason) { if (reason.length == 0) { revert("ERC721: transfer to non ERC721Receiver implementer"); } else { assembly { revert(add(32, reason), mload(reason)) } } } } else { return true; } } /** * @dev Hook that is called before any token transfer. This includes minting * and burning. * * Calling conditions: * * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be * transferred to `to`. * - When `from` is zero, `tokenId` will be minted for `to`. * - When `to` is zero, ``from``'s `tokenId` will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 tokenId ) internal virtual {} /** * @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 {} } //a // OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Enumerable.sol) /** * @title ERC-721 Non-Fungible Token Standard, optional enumeration extension * @dev See https://eips.ethereum.org/EIPS/eip-721 */ interface IERC721Enumerable is IERC721 { /** * @dev Returns the total amount of tokens stored by the contract. */ function totalSupply() external view returns (uint256); /** * @dev Returns a token ID owned by `owner` at a given `index` of its token list. * Use along with {balanceOf} to enumerate all of ``owner``'s tokens. */ function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256 tokenId); /** * @dev Returns a token ID at a given `index` of all the tokens stored by the contract. * Use along with {totalSupply} to enumerate all tokens. */ function tokenByIndex(uint256 index) external view returns (uint256); } //a // OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/ERC721Enumerable.sol) /** * @dev This implements an optional extension of {ERC721} defined in the EIP that adds * enumerability of all the token ids in the contract as well as all token ids owned by each * account. */ abstract contract ERC721Enumerable is ERC721, IERC721Enumerable { // Mapping from owner to list of owned token IDs mapping(address => mapping(uint256 => uint256)) private _ownedTokens; // Mapping from token ID to index of the owner tokens list mapping(uint256 => uint256) private _ownedTokensIndex; // Array with all token ids, used for enumeration uint256[] private _allTokens; // Mapping from token id to position in the allTokens array mapping(uint256 => uint256) private _allTokensIndex; /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override(IERC165, ERC721) returns (bool) { return interfaceId == type(IERC721Enumerable).interfaceId || super.supportsInterface(interfaceId); } /** * @dev See {IERC721Enumerable-tokenOfOwnerByIndex}. */ function tokenOfOwnerByIndex(address owner, uint256 index) public view virtual override returns (uint256) { require(index < ERC721.balanceOf(owner), "ERC721Enumerable: owner index out of bounds"); return _ownedTokens[owner][index]; } /** * @dev See {IERC721Enumerable-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _allTokens.length; } /** * @dev See {IERC721Enumerable-tokenByIndex}. */ function tokenByIndex(uint256 index) public view virtual override returns (uint256) { require(index < ERC721Enumerable.totalSupply(), "ERC721Enumerable: global index out of bounds"); return _allTokens[index]; } /** * @dev Hook that is called before any token transfer. This includes minting * and burning. * * Calling conditions: * * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be * transferred to `to`. * - When `from` is zero, `tokenId` will be minted for `to`. * - When `to` is zero, ``from``'s `tokenId` will be burned. * - `from` cannot be the zero address. * - `to` cannot be the zero address. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 tokenId ) internal virtual override { super._beforeTokenTransfer(from, to, tokenId); if (from == address(0)) { _addTokenToAllTokensEnumeration(tokenId); } else if (from != to) { _removeTokenFromOwnerEnumeration(from, tokenId); } if (to == address(0)) { _removeTokenFromAllTokensEnumeration(tokenId); } else if (to != from) { _addTokenToOwnerEnumeration(to, tokenId); } } /** * @dev Private function to add a token to this extension's ownership-tracking data structures. * @param to address representing the new owner of the given token ID * @param tokenId uint256 ID of the token to be added to the tokens list of the given address */ function _addTokenToOwnerEnumeration(address to, uint256 tokenId) private { uint256 length = ERC721.balanceOf(to); _ownedTokens[to][length] = tokenId; _ownedTokensIndex[tokenId] = length; } /** * @dev Private function to add a token to this extension's token tracking data structures. * @param tokenId uint256 ID of the token to be added to the tokens list */ function _addTokenToAllTokensEnumeration(uint256 tokenId) private { _allTokensIndex[tokenId] = _allTokens.length; _allTokens.push(tokenId); } /** * @dev Private function to remove a token from this extension's ownership-tracking data structures. Note that * while the token is not assigned a new owner, the `_ownedTokensIndex` mapping is _not_ updated: this allows for * gas optimizations e.g. when performing a transfer operation (avoiding double writes). * This has O(1) time complexity, but alters the order of the _ownedTokens array. * @param from address representing the previous owner of the given token ID * @param tokenId uint256 ID of the token to be removed from the tokens list of the given address */ function _removeTokenFromOwnerEnumeration(address from, uint256 tokenId) private { // To prevent a gap in from's tokens array, we store the last token in the index of the token to delete, and // then delete the last slot (swap and pop). uint256 lastTokenIndex = ERC721.balanceOf(from) - 1; uint256 tokenIndex = _ownedTokensIndex[tokenId]; // When the token to delete is the last token, the swap operation is unnecessary if (tokenIndex != lastTokenIndex) { uint256 lastTokenId = _ownedTokens[from][lastTokenIndex]; _ownedTokens[from][tokenIndex] = lastTokenId; // Move the last token to the slot of the to-delete token _ownedTokensIndex[lastTokenId] = tokenIndex; // Update the moved token's index } // This also deletes the contents at the last position of the array delete _ownedTokensIndex[tokenId]; delete _ownedTokens[from][lastTokenIndex]; } /** * @dev Private function to remove a token from this extension's token tracking data structures. * This has O(1) time complexity, but alters the order of the _allTokens array. * @param tokenId uint256 ID of the token to be removed from the tokens list */ function _removeTokenFromAllTokensEnumeration(uint256 tokenId) private { // To prevent a gap in the tokens array, we store the last token in the index of the token to delete, and // then delete the last slot (swap and pop). uint256 lastTokenIndex = _allTokens.length - 1; uint256 tokenIndex = _allTokensIndex[tokenId]; // When the token to delete is the last token, the swap operation is unnecessary. However, since this occurs so // rarely (when the last minted token is burnt) that we still do the swap here to avoid the gas cost of adding // an 'if' statement (like in _removeTokenFromOwnerEnumeration) uint256 lastTokenId = _allTokens[lastTokenIndex]; _allTokens[tokenIndex] = lastTokenId; // Move the last token to the slot of the to-delete token _allTokensIndex[lastTokenId] = tokenIndex; // Update the moved token's index // This also deletes the contents at the last position of the array delete _allTokensIndex[tokenId]; _allTokens.pop(); } } //a // OpenZeppelin Contracts v4.4.1 (interfaces/IERC721Enumerable.sol) //Copyleft (ɔ) Remilia Corporation All Rights Reversed // pragma solidity >=0.4.16 <0.9.0; contract UserBanner is ERC721Enumerable, Ownable { string private __baseURI; function _baseURI() internal view virtual override returns (string memory) { return __baseURI; } function _setBaseURI(string memory baseURI_) internal virtual { __baseURI = baseURI_; } function setBaseURI(string memory baseURI) public onlyOwner { _setBaseURI(baseURI); } string private __contractURI; function _contractURI() internal view virtual returns (string memory) { return __contractURI; } function _setContractURI(string memory contractURI_) internal virtual { __contractURI = contractURI_; } function setContractURI(string memory contractURI) public onlyOwner { _setContractURI(contractURI); } bool private started = false; uint256 private mask = 0x000000000000000000000000000000000000000000000000ffffffffffffffff; uint8[] private shift = [ 8 * 0, 8 * 8, 8 * 16, 8 * 24 ]; // Hardcode into a literal in one tx if possible? uint256[] private packed = [ 0x04be77ffb3b583ecac0440bcee416b402c665357240f594ef11d0afa4d5ea90a, 0xb44d47e48cf746aa687ebad194fd537f6e00582a982f68fe8fd4cc402d935e7d, 0xe8756b20ee12500070bf378e8b131acfd380c6871b01080854c94941deed9348, 0x294de76fe57ed3692e92b0c507d2b3186f1ccd7be18763ffb9eeb63a217fcfa3, 0x13a207198643788a7e0735cbacdf8e321629d9fe7775b800d8906fc10c34d04f, 0x18aa4c810bf69d5232c48f10a174933ed3fce20f49b4150e0cdaa625c03ade56, 0x899e3505a0a21e6e1d610c786805a2deb929a2520e385c8215d0511870299bc0, 0x04a1bfbf6e495b4cb460e0e7c8ffafc27da72beb828d052777c469bc152e3d58, 0x1702e7463c5a6f6efd2be02625980700a9e266a085531d7c8918dc42a9db48aa, 0x32ca05b629a946d9c74da6951b8e50390ac8b549eb0f7713da966f2234bfa9d2, 0x29a538fc3566a2e52ef9a1286ae559fd9197f14fa796fcf5f9f9f06534307a2d, 0x118292dd9689d3ae30e4f2891b2b91d15be9508abdba84aa4e4db4a498a35872, 0x9a4f432accee31b49419c2d676f2a616e1af8e50e421acc2bfa434a4cc261d4e, 0xff54643a595176e5b4d09066f2e9448921b23e129b46809c17062ffb6a16b9d8, 0x959ef3c047c7ed15424625b600ab25caadbe595ef6ffa080a8a5a9a9feece114, 0x7b317f7fff5d2e87ce57f4d98505ead7d961287ff800f7e0be20dae2db14c771, 0x176f70d7ebab8cf701e30b141b03e11f2cfe60e773472869c0ac1a8055f2edf6, 0x88087ee12d44dcc8e17afe3a01faeffdb7e13679db6c5e6cb3fc2c3cec4ce000, 0x90f7cef591e2be88258b5a62fe2ca3d026f049aa5cf0afa4772cd7dd3cc7803f, 0x8958e45cb6b054b7dfa9d4a4ee7b2748aa26de213f1507043f21a086bae913f0, 0x11c7b7993a4612ebf77877742ddde051ad367394bfff2fe4cc14a6ddc29881b1, 0x328ca458b055f179d5640a5d594550f5624f58087c7f388fc3f465db8f82490d, 0xcdeac38b1f3501362d894db5c48b757a7c00c6f7e2d82cee2ed0b13cc0da4ed2, 0xa5e4a8d3a128d3a0ca2561adbf6a1c5946ed02eaea7f87fd9b989ab1be63197c, 0x92f594b6f0d8f9d0b665e430252c8132f28de6003d3dbadb02e7427105643f63, 0xdcd892515e9ca13fb022c5b9786efd8f660404273f7cd6880e611007d66125d5, 0xa9b054a1fb2a6c30d0d805e8270ffe4fdaa2a2a8092dd036c73609b01ea3dad8, 0x141a92c3bfe19293af0487bf705ab0999bcc4d23c0838d35f700a0ac7074fa58, 0x4661878caa6683a2843d0a9ec553aaa7eba108693d1506b05a76a2c25c9a17a9, 0xa14c9c8ff481b61b8a36ffd8c12b32f1b06c2b48f0ff95645117abe91f10dd0f, 0x58b968aaac0a86ed5e28a0bbdb0d58931d12c4864722875cb39648b12ebe70c6, 0x5d9a1ab8ad5b2f2868791f489057cc002725ac1b70517a567f5e24148c9c2658, 0x57322c951150da21a5338c1be0f6f6504906157ec5e28b06aa68185aaae74d24, 0xc1e83888bcc03dff64089c2d1140fae30c3846909ac3e65c8f091d276ba04957, 0xa796916ba29c32d8eb0615e2383e2f96a10817ff22bfa2583a0f40a0c1a35833, 0xafd224b226d177e486922a949cd01cbd5ad7c52ac8b548f74a931babf7241af9, 0x0215781b6f2a11cce450d68d971f77f983d2848638a0d7a4dbaa3c0239071687, 0x8ae79744863fc03319e8ca4a9db3bf1ad007c2fcb7724e54bf0c009cf47e7f5e, 0x87d1347b33d87776863b1e9738d68a9ebe89f8e5c055e84e5da01d183c0cd0c7, 0x470db727b4735c8128672fdf5f5cd0703c8aa700e552f99f1ffc2520157dcf66, 0x43c60c167967bbc4e4651f4c8643f2347ce1544e21c7a29f6b970e0e6fae26fb, 0x96e0ee7d32cfb27964495d2a6f2e20924e424c94aa952dca072f3e10553e26f7, 0xff9bbbad1bf7f84ccc18c954ae185b0e807195e13841d98aa65db70b28e2fda3, 0x53c2b899901d423b63231c77ade93c082f35056627ddbd562bc87c38d5335edd, 0x5aeeb37303c0a22a16de8e81c65a85744f0d99ab401f630fc8faef643c046508, 0x7331b5e622816cc8e8560dc53aad39181476f1a3e0227146998bf63ad4882cee, 0xb6c8d73f865189d4c1e3ec08a82e6c2236c8dc9508df73f9d07a0c9c0ab1a192, 0xbc57456309fe15220990768d44b70b1de695c38186d7c7019d09342155bc1dbd, 0x76fb44cf214939edea00027097d030000700b7df6169a95ab5d5be1158cb6868, 0xa4ea58956359ed832a63a107d45947443d02d1cb650d883a9642c81140834774, 0x825357201726d3d250802f64e6038c82649e584de032e1d15e2c50485fe8efd1, 0x3ecf8db364f8dc6d5044437b038f0a70b3bdf992cb9e8b92b0b1fb177d317ecb, 0xdc31c0e36406c0170d8aa00d2834ddf65448a9795c40e69a617747ad2a35b31e, 0xce66145d8cdc091745409b41fcbe151f0f9fa555c9009c068dc0be3b6e88705e, 0x002e9e50ca5082785a722391417d930789cd88be9e1bdfe96066e877d0f2c404, 0x7a00ae177ba4a64cc8555c1e903ea8eae575b3f250cd1855e3616e9f5e2e0b51, 0x886f5a4bc8b62135753fc2961e085b2eee0a6c02f9dc0393b1a0ab3b167841ea, 0xeec6be570c6603221b356b325f0eb4748fff64ab20e78c1630ec5686e64d205e, 0xa86b97013fb2fa9c1538c1fcee6d0d37e1c1072f49d44800d3a925dd1127e4ff, 0x43301bbd24a5d8d2a164f0378f9e8ba599ed7c216b6e77ddee17d4f65e927564, 0x585aef9cb4c3d4d96affe4dfb79261f6edd16588627110ad3318d9c542b2e5a5, 0x7b601996d5ea69b7c86bf1cec2ad432bbb4de4d83d0515263e837c9f32f6e288, 0x907763608d00f490d8b86d6f6b23c18b6350114ba9a9498397cb3370863492db, 0x25887707b541065020bec3326120a492217393c82f3f3e2743abf4fc393e044b, 0x9770ec070bac9a571344524e2d2d28e5051b71721542b630092a870c71ddb428, 0x886d86ead4d0fa677014778b178e47f1cb6abefb9a2c3a18c4c929f864714926, 0xb43e9322c3d43a7ade6f1ab2a2c4c2aa265950d3362854a61bfde6e3eb64420e, 0x15c6a7ad98e0efd2b34096fe7507efa30901c7d98061cf16d47dbfb8a275e153, 0x362361397c18d0cb50357736eccf985672877019500b7a2c067451536dd5de70, 0x8042b309510da3c7b2df4d6582451ed70a6c0e6ee1d4cb3d7508b0ba022c998f, 0x186b7b7a9e73bf7acd49a76c6d7cdf0a63fb3c104c89ecf492f91d9b729face2, 0x0777c99f6e1222cbeac663f8c255e70c86e1fb5afe75c46c5eafee36f14b9cd2, 0x4e811712dcbdd9c28479512853da60a84a07d947c48823e34318838de747867a, 0x4fefe07dfaf71184a8118b3603c55c79510fdc97c8da3b95d90610e9ea91dda3, 0x36f1ab34ecc8f27df3df8341faa1373f3420fd66ab5aec95dfa6ddfe4254cf69, 0x64cb7106b7aaab9c721b9fe7e26f5e268e5c98eb39d87fe5da6eff9d38b9bd7d, 0x37ecf0856c6f0c3dddb12874324be8acdc00b9f367d5b0732fb5b6f8bd77f3bd, 0x84e3d8567460202d9b72ac7253c62f2873c880d3b353c78559cdebcaef4de5a4, 0xd3a853ff02d390a35b18c6794cd8d8e154755ddcf7db4dfa1069c3305a0a149a, 0x79f39651e25b0a00576d589c2504de733fe7fce25d3761d22c59a5b948f5a84f, 0x470010764c8697d6d3e09245d864cf864c56492336367dcb89ea7715849bd724, 0x294dfe83ac364721aeda66b4ac6382fc688cb30e0535fbedfad3e8484fdbc217, 0x2f611477f0a3b1adfca2855fb6b2533f46651e8c42c35f09f08162df327f5d8a, 0xee750252f9f77209bc020e1b025bee018ab640700e4be4065147e481fab90420, 0x5f5a6203eb57c4517f6fef7fa7ebb5f1ff6824250a0ccfecf2207c07eaeff002, 0xfbfac2ea2255749c90facf5a4bb4d0c4f194acdb9a24d38dfb84fcd9f9f995cb, 0x3470eaecceede93fec9a7925aeff6c7bfa7750143fb88a314984a7dc8ca5d0b7, 0xab1b1b80853e36344a3c2c9e90a816367ef96297ef0117874a85be3241833d2b, 0x168eaf67d67741cbfd27b6119c7b1918c51250b7bb80f4f7132178e210e8db42, 0x2ee15d10e05e814b0d1bfb1e6f855a20797b21f36b265ac3984c2bb0db53cf47, 0xff9bb89e36232b0917c0948cbe2119ef1f83bf43c406bd4bd50c7364aa2ffc69, 0x60e3a8372c103f6070dfe8b56edee9421d2678792bff5e2e98b6a5fc3c9c29e9, 0x63aa95a559042526a0a4de1c48b04c52691c2c993eec2da8d3ddeb6d6ba6ac2f, 0x9960adc80296299a9845d8b0c6ea4147f9204ec1b0494ee3fc56cf9a2d1c8af7, 0xcf853f64c98d6cc8df3777bd1f6e1757bd2183c4f0b9cd972ca789b48e58bafb, 0xc9a93548f7e4d2812f0ef02bb43adab46873af9e61c47dff1a9846a5ed8c73ee, 0xaa8836a2cbd19c9bf84fba0bc1b899a4c49ce020d84c742b409fa47362ed17fe, 0x4bbf661d20ff3459f7d4ea87ed936287bcbc69cabaf1606afb02a61503311be9, 0xf079ed44f181df4a4e42803eafd303aa6c491c30b6357fc5aa692b4c6623fb5f, 0x585ab73d452acb1ccffd080d9b11b29e2bc8aa153a9aa5da9b5271ad34782639, 0x1500a528cb9793ed6afa1c3122272969a3d8f91a170b5b8e5e296e2c0c2e036b, 0x8c2ce7025bd14759aef8849e596b5f703f0b4e761d20f63d5a0a00e14744d0bb, 0xfddaca5119c388b8345c0f107ffa8abdb9eab28f74649c8a45e967138df23f00, 0xa6d3a660e263430c207ae2a3cd761e8e26d82758eb1767fb8f3263fd3247457d, 0x58f213356ad292e094907fc896072ec911032994f815b1f81bd49e537b65ec3d, 0xc11d5a8ed6241dec861dc6ee230d61b3586210f1864c19966f177679a4d99601, 0xed6fe6a6efaf6435700de61a8ffdd74a461d22ce898be7eaf3e4e34520ef9ba1, 0xaf9d6a25e0f5c7d19c59220f38f5991b9cb1cf84bb32cbeebbba808f20cc9d95, 0x9e3ae79f4016e92a4f3fffd8f60a4950b0eb7144da5d3a60a3c2cb704eb88085, 0x03f3b824e6395fc18a43a864d919ce542de6f9e399eac20ed2bdfd6bbef71ca3, 0x1efb47f894d46c4cb3ff252c15b5870f27b3fab8fa8c4f63685fded90292eb48, 0x839c20e7f5456081e57047c9d0511afab3ca9be636297e1d201e7c2f4901a408, 0xfe67de0a5b9bb160252951c62ea94022d98e79ab424171f1d7caf0c523b38831, 0x5204a4b36685e5c8c32b942c0c608e1fd6cb0a4f69b901226a791c2326e628a7, 0xd3de76a13e15306debd1859b666ee9ce40db99474da72997801ace766a8e91d7, 0xe7fcc6c56396a4f994060430cca101be622aff1216fc2697f1a78afebbaf7f96, 0xa8e6e754819120dcd3fc572bdd4c99dc503945148b1be5547dac5a8fc09e5df4, 0xaba34bb49d7b199e1a7cb27aaf853e22b76bc1f84e9c872cac09171d3f93212d, 0x0799454cff074980028df79c0e0602d0e5b2c1f756d120cde11e9ce70244544b, 0x627dce90aa307410d06f136e0bc24aad951d20df731131cf3db3b69b6c0a9536, 0x1983801ba37050f6597f8e6d211fc22420a564e497d6e28a3ffef74d3129feee, 0x0324b227ea06eda68b262bcbece666e032fd18d46178a90c87b6316629fc6bf6, 0x9cd4f5444a7b9f8e0c41f86e3cd95e35c4727e0ac3412be024fc61a8c49ec811, 0xcd002b7433404c3238f0ccb8e08c9cfbd64b1412553a9904904ad9212d042d27, 0xa98f7096a271189ba30b6e6ba14c59100af772651251da9f92a807f356075006, 0x71145a097b4dd01abd6a67c71876aa7d0f15e8f7ec4eb4d972ce6caf0f785522, 0xdcf3955d44e35a1d7828bf2c69036ddff96ee14ba2123896446274ee303e7db5, 0x8cfa67b8f6a3881be62858703bd677f5c6dc4065910a301271246721d7efa1a4, 0x7c9357e34a5051d25557967408fc18f72c1c162cd3a04f0081c8d132f1658261, 0x8de98473c53b6a2d2387e8e0442de22cca664bb39731ffdbca66de26cf6e756c, 0x5ad4de50be0280fba179c33bd3bcc78800be37bef0d1c3e807e2d1e1c8769ea6, 0xc8137a1dfefa5bc82ef003df31788decc71a4b7756bc4dbc0c3eae84ccec8358, 0x7c61481e97e73979c98afc1fce12be715db85011e7ff9797dde82ae46d7503ff, 0x6f3e81e643ac1dcbe0c2d516c10f2f50c098c1635124a3f1408340e784d72ae1, 0xf9ac78230e8df93f3b0559df1dbbc92cdf8586032d9961c634cf14d01d8b7472, 0xb0ac91b9a32c7e83dfb67cd13e247881623457a4ea38ca6ddec4098d005c6606, 0x09bb765f14bb1f2031f21d49be17973242df35840f95e648c8963497f6760472, 0x3ca033acf8df846f851d67dffd9170511e424e9d15fe1f8c75ce3e991ffdb436, 0x04b4ddf11bf43a9447cd54be3041e6949c27434e8702194cd5bf8e65c27d1267, 0xffd2e192c08769b88752873fda063b40b16e2b28dd16c55448c8550d6be2057d, 0x85d19706a9090dcc1700641e0e6c944de2d8e1f19f1b640ee89e7d0a3c7480e7, 0xd28f3d4d19e2ad05ef2d263acf3108a80e5a0d8456bd47b3ad933cea8ca6c3d9, 0xb0ea8e62c85d3bd3af5e59e6576a07d41912ac74ef37edb752b878d7583d8523, 0x6d034705ffb7c3c53277851b01d9943a40ab79e48bb3fa7c5dda090298f3bf19, 0x741fe78dafc83388b4b19a17b0847ddf5a041400bf15f21a9ab14ce370431e76, 0x210ccae4003f10dec5b07c8bed18c872f6b5900daf5cb5760e8ca4c81a311a63, 0x4f8e554625330f5511152ca3a5cb8756524be7fcb371f2dad6f23b348d6c9576, 0x8cb0489a5977375583ebda7c592f8797cea7b6dfe86c2593fa8ceda02552750f, 0xd6e46251391db88408fd48833c2e58502aff26a54a49b1b6955817ee468fbff2, 0x583bb4527225cecaa1278c2949e8a98c75bc0a4831df398ab7d61e445d6659ce, 0xe8f23558754620485545b015c3339de89721220b18d7b6f44740d491a87e6584, 0x65c4431f8df1d72a42672e76c59c6e821aaf0fa1c8c5f2c60a9c381307c730ff, 0x1c6ebadb7d23ed6c558816df388817458758c2ab1bc67c7d76dda98288f4052f, 0x2005ae5fbab174f76c5ac1cefaf5d1de1534ae3d99fa8afd8e86d91c7ad56b30, 0xbc169394fdb522bec381cfbe263c346e6927f067f493d324146a1e3aa1637b5d, 0x914bcdbc01fd3ae9eae6079d4cfa2c71510092fa30578024486e9337458a1bbb, 0xd4b62c7dbc1bb79123b78be1a054346948ba1569fc78dbe324cdb395671927ea, 0x313af6a640c47bb581fe464a6c5da393e9e4fd9cd0a96699024a61fb8507277e, 0x7dcccac51b8580036790df6518847722219e1e598a1557b9727da81156845ff0, 0x22493d19d10ea6739bbedc0b3fbc32ebb6309e4a734094269e09fbb31cbdbea1, 0x0fa1d2b93b5663810a7a812888c35dd425564c789a2557b3495c2fb0150af2ba, 0x6e066809750a055ba3cf36536b9cff8ade3ca0e50fdcf2597da6db17a9d8fe57, 0x83a07f23f72a9b2af879ebcc0a1f891d2d3c27766727726965381ecd9cc7e78a, 0x043243b0eb3e853f408543342a1cf6871806a67f072829705ba0eca7d61cab7a, 0x538cc1cf33bda6889034c2e6fdc290793d1c08ab546ddc70674619ee4866df15, 0x2917a17f944c5f2a307623363e2f50c181967140f5d46b4a5528586f55900c4e, 0xde3b02b595a5eb0b52e8a33d0bd572480eaa30ac8ce316f31454806506f3051c, 0xa646270c314453367fef3ca743f0bd957d40e5125e91610e23e71ee0bd7b189b, 0x8872772923f7c70b53d24475ee4fe4d5ee20b441a90baeb73bb127a80e2621da, 0x0e43cada96ea0ee3757a8048d2cd51283493680b23818fa69ef469fb849e1781, 0x38b2d53f99ebd1722d8f4d420fa67772ec5979dbd3ad9f5bf7652be832653e74, 0xa99af6d4dd22ada5f06a2a82c4243ffb40546cf5e91699bd76a36d1d2924460a, 0xfdff31ba18f5168e616cca7ecdab9d6ef1cc59f83eb4f2ad660deef15ffb7762, 0x97e247889c2b9141211bf4e8963d63a6359fb5b675ad10ced8aaf8a1671e6fcb, 0x9783c77aaac52266faa4cac60aba40d97e4886ccd5c0186e6aeec28d53d509bd, 0xfa6f9a5a10167556970f0953e3715c265ed94c9c6d0b8eb95d289a61f42a2535, 0xde925363cee815412ba1c0136f6160360ab97526c2ea86783927383fbe4bb2a7, 0xeea6394379722e7a93e824e1eaa26e4df7f72a859351a822321b27fd5da7bfa9, 0xdf243b2f59176408027c6ae0def6ae62e0b03ca4d82da6fbe965902d4f2bdc59, 0xca3cb60c3b6325e9419470b4a19428f0ecf220b3a845884ab8f4e654e1641306, 0xe5668117e58a2d3c03748f21e2617d7afa167284c5184e26ce5d25ff1791b56f, 0xf5bb0c541ae2463eb557f2ac3e7ac8df287ba5bc57e32b5212bc921da23d06bb, 0x65e407a458552fe5aa8fbcbb4e614791ce0b8173dd02c0009f47763f3559a5d9, 0x583d0f7d4b2261b5ccc667dff10f32a66f2be60c16c96ebec0a9bc6d3e1a8665, 0x25356a8a7d011a6d0ada23fce10b74b01ffdbe7179eab42ee828c1118f5d25e2, 0x642dd757ee660773abd419f67d00aab29171d474364f1716ea4dc91be14e162f, 0xd6a591390c6b7d765c012f1c3ecb1f03843672dcf65774d79a1a007804f6f3b5, 0xdcbe42e3689cfbfaf7ea549994fb5b6050bca31caf61de120c088ca086c49a01, 0x4f9c258b2d1f03e51178420aa397606059090a84e63afb58ea926c36e96fa686, 0x25f9dd122af94bf1fc7c5e1a8d885a3f231a7eaad45da1c88c6604092b2132c9, 0x2785c5f46a0283d5f60b2f931e89c32f1f7732ca8f86e78d7d2d3552b03c8957, 0x0b3ae19aa5ec870df4ac7f2b134a292d7b32f903520e36c899057dc70a7f32ec, 0xfe2dce02b897c5470e2e8bd22636f01aad994c0acc97093f3cd541285400c6af, 0x679cc222a9dea1a3b26915e8c4c28b65b7ba85288c09f348ce240b525451f887, 0x3021c1a64e54419ccb14930bc85b7cafb8664124ae4ba5bf1c036457183ae1cb, 0x97f42b5bc3702fb2d4a6cd8840fc98e0553608448a05af110727c9dfe2b8ed42, 0xec26113d571246bf51cbb4dda93f1146eeaad8993e8d9458272d22daab1551a4, 0x71db8da172185387ae395384eadd0d1fc9b8973e7a6d9acb970f6294812d4039, 0x84a0ac1277f47728897c0581be5e5e25fdff70f6712fd0fec331a0737ef514a2, 0x948370336ef97449ef210c96eff9701f9a9eb92c3b0b48b41b40aeeb3992ba23, 0x2f2e42f570ae207b63ea5076632d39798e5c677b2dbca5ab85603744fb792f76, 0xc3f4932f0d588655af54e2f00a426142eaacf2bde606d06a9a586525edea2af1, 0x1dc4903f5901ff89fe1b29a9f53e6cd11a8c2cf61d0c122501022224fe16c7b2, 0x8fbe819a70d78f305b71c4fe26604c6b6d8578afc25bff56958f73c59c655a42, 0x4bdba6fe4b51743bdd0b4f0976df5eda3887e54b4e3ea155cf4ff864349d51ed, 0xbe7b218afbda4ac584375639f1410fd663a7e77e30c9924d76d54c4e3e388bd3, 0x02fca3a3d0b200c5c32ab4f052dfdcaedc1f92c6a5a6fab57f5d41f8a3070b32, 0x2da1b9ab321e7dfd7b5f6aa88df94b1abe404098b566946fda64607d765ae877, 0x141a9204a3f929a0d2a4c0f350b74d460e924c8af21b899c9ea4352e4ffb8764, 0x26b60dde57e4c4e140679b76fe56ea15f423d5eb3a83058862a0d0f04c6b6020, 0x2386177793558cefb99512222cb23d95cfd774e764969180af76e577cbd791d8, 0x76263122599ee30894d9bee0a3e8aaf7ce5656d63d2a3e2e58dd8c92b7be7944, 0xca81c51409c0480b233ff71383effe4544c285299ae67dce01c13c3ada2c11dc, 0x0517b33d8e925eb36ff4b8005d09d1b03251daabc612bcd740fdb706e416468e, 0x86040f1770059e7d4a79ebfbd5df12314d42d7169ae12a291f4227cc80b40f98, 0x2c0dfbd0ee1e33953a9ff0982a107e46b9510a983e6715173010b6681ebbc5d4, 0x74406e2ac5175fa1b9c7608cbf46044f539cfbb07b8a5fe46245c5733d7cd37b, 0x8276858597af540ea3b559dc8d3b040027097418cc1636674c34526e1f9a3d6f, 0x20737617f5e64b453aa90648606bd27c7223dec92ed55a5b46837c32f1ccc31c, 0xb836107a6dd14fe143b9875cc0f2de5b7501cae3ae1cfa6d821e9884b042bbe0, 0xbe61a21f8ee88b762ff762f1d6a49170e5868b3592c85be22a1c74c8c12d208a, 0xd0a32f529ce21e00464a16115157ef7732829c076ad2a76afd993e36e86ef9e1, 0x3c07c5d2a6b5e3b6fc92a394378103131886310ea0963edd16e0510085ddcdf9, 0x810f6baf4ce3f7320d86bc22191fbecba34fb771750c75111da9ed21789d4c0d, 0x1d50d372b8ca722affd7577ebe58e524b5f88bab05cf3b78e3c28f8e4a9222c6, 0x37f7c551d589ca473a44ecc80d2c49ff79c52a789e74d6ae002570bce274101e, 0xf08f5045e57388b396a4a98884e8c635c8c7e866ed7fae7524a5cfe23b0479ea, 0xca197b5a3b4c62cfd61c9b9fd84440608221bce0857cbf237453c6ad133e537d, 0x6000a57f00fa009b0586a4c7beb9f66f0d6ab143f354dc879838a142cbc07879, 0x790e2112a467485f87ce86610c2c107648ec2ca6ccd21acbdc8034c5fb133a0a, 0xe836285895fdcebb42d5944ce6616f9eac54f1dc57aa9da9c8b95c46a1941158, 0x87e01d88313b388fff7a189d23576a45ae490e9aeca5c347398776de2862625c, 0x9f58967e22a74b59269a79f372b22e9598267909f2ff761d8d95c95c8aa7efd9, 0x365c0dbd9907b1a1758db4a32b517f5c2fd4120952389fc58cc57e172db40805, 0x04e47890dae571cfbb442867abd3f9e637dc9381bc6cbe713d997d41d95f61fd, 0x09913f5ce8e965e0cf1c06ab914f3a37e4d2320c7bbb9e504950db1732a99842, 0x8758b164234f5f60e5ba5ccdc07dffbf9d66b2228b8f76040bb15932be61d6dd, 0xd05fc8746a2cdb0d0a4365df3a7f989325945396f8c0847a1cded2010e4491a5, 0xfa39b27f73b4a01ad6d1ad285db3fa808ae0c84d88ec3deb94c17aedec1a485c, 0x303d65774dfb0af74e09d57aed661f2ebc75b22803d8920ace520cf4b18eaf9a, 0xfe5d0074780b409904ca22b04e08659675c9635fd6a020e2bd1c85842662ca71, 0xe33723ad8ea961560ba7755c5fccd72035f30b367859823faa765a2bd4ac0c6b, 0xa712b29e058dd527ad05eaca21344d38bf4d1c49a2d6da907a676a2c2938acb2, 0xc351ca1abccd1dd35825046bf8d4df6362e99edec7cf393fd302c6cf6cae1d92, 0xfc4b090f9fa6c076400847a9462f5931efc3e026a0547139d8d6e6e523c7f90d, 0x3801c2037166fdcdeb26f83b037743aa29d13574c50916760722e189cd0cf717, 0x9098b67c21bcb58702c5616ba02850821e8c3c1eeec5aa7e3edb6e7b471baa75, 0x7a41a336bfd056e80ea7c61f5d4f578834dd44995aab75c8f6572c77c514fcae, 0xf4c48a50e54ef8c378886691afeec32a22f08cb325e521169538049df2af2ad5, 0xc7f013aba6dd22b0c91c288d417759dcd11c38e28dffde5c16c957d5960e3a08, 0x9a00240ecdaae1021a547e4336f5ccba6c49eff66fc2d231bbeee9c3182a5c36, 0x4f27f3e889aba67c681e712a6874e1bef6b75a4ddd9ef741fbee4346ed2a5a7d, 0x7c00f9cbe6dbb357e711c742b34b36e3e39f49c93776de1a93d1e4f1fed9c6f8, 0x48f411a6721c89dbbf2b818845c20e17c1a780d257e5763242a30050d0c56322, 0x59ae97f13dd9687af8c8f8a12c089fdafe7e68a43e98d68c3bdcaea810335451, 0xfa5c8bc2f8c630b6c7f6f815db2b8accae092ff0be13a31fb2ba4886873ed027, 0xcfc9f11ef4e24a8e3777b5371de23ee7ba5fe4cf906010d05e3abb8aeff3543b, 0xf2c35f10b7e9930d9cc1c6261488246322f6b36a0251d93187017d7125b5b9dc, 0x08e68511aa365bef9d3337b4ad47385f63c54edec60bd41d4995525bf2c11b8e, 0xad8f8b0184465bc92cac1e81bd6ea847af1509ed6367ed0a6d6fcf13901a4aa1, 0xb41ae3d73c1d7c0662c2b0d886d12b0d43610dd88f05701b4cb5a002a42389c2, 0x3068a51c2b0cf35273a1971f70ab1cb37d5248bcd80e15708c0f087d64f71763, 0x6a405d89878587aca433b1fdccf1f155aef586536255f4d734d84bda02ebf037, 0x1812f20d7dac59dff6c010dc2a16041387ffa09e0baf2f10e035014cf4dfd494, 0x947704cae78e0b88aa4ba3cf01e26194ee1a23c0c9c7d39ccb15417e4d04d7e8, 0xb2b6e0033a015f3fb94aba3e3de0880683cde29350035e468c38906bb7122667, 0x550ba7d4f18a46ec35a459f62c9a06aa2bf331109cc76b24ebbad7f243a185b1, 0xec3aef2b3bf72ad3cd6fd32f472af51d555267a795adfc84322c21b934c0a0a2, 0x1b0b01a79eda6011629247d76a9019dae5c67e3a0a58be30ada687a309e466e0, 0x29a2ecc606b8f9af3b39d3308238c3632e208ffd25bd0426a1b5047a25603f1c, 0x47b4d3571de53857641e407525140eccf97dcaab0234274d5981f8407306aa1e, 0xd4a073fb8efeb65faef24a5ebcb199cbe16af4e2f9871243227ebff92ba03e2d, 0xea11e21a24d6c01cb354efef57a876efd61f987d7f6b5e8fe49e3469b3dded6b, 0xf79de415e84261e779d9e0d155e0fb20ea1c1cdb586e9a146fb7a3e1dbf719b3, 0xc88ed114cbdc5cf7abc6e032ac5afb5578405d4546d41cecaa46a43ad5ccb688, 0xe5557b20edab7c86f150d5da246f86b3567584d73d6d3baccd226854415ab830, 0xd8d5073e4ec316a5c4f4c8e9adcc13c0ae7fbae1381f68d8218ae8079e826d53, 0x2b923574c764fae1dca936b354bac4e1f6334348bb75f0e073666bc178dfb032, 0x829995e4c010dce1c341697053980a4ae8ff85ec0217639c5c516499fa2ddcd0, 0x0b512bcdef9bbde269578ca5fb5f00c47aeb26f97bf05c264197df7d2ff4bea3, 0x6e89ef2ab42e16416ae713abee0a1e8f11059352b617c3bab5ff5538d7c9a0ea, 0xac8e09aadc40d594bd3f397da2fffb7fb6a8665257cc0acbd841e5e6c0d2c6e3, 0x57abdb4edffbe3df37919e4b170b247781fbf1fd46bedb1a5dc1d8a439beec5c, 0x75f44b45c4ca527fa2771716eb4ca96a975419dddd8362c513054d29e2093b77, 0x015d9aabd8d17ea6260d7735c3d5b991027fdcf41cc648c1294c3cd162953d95, 0x42c1789b7b7a9102a77e7535108a8a7907bdd6a72bf1452df8a517cd05f6a0e9, 0xaa7c75aa92c33117864454949108d6729190feacdf2783533d4926c0f422a9f8, 0xf70039b9e9cfc216d7ef4b601b73bf96c6476e5d9b89260fb6155c53fd3f527a, 0xf409827eed42baa93c54943f31104ea1c51b8aee59e9662ece3ec8a18a6f2dc7, 0x1e35b46fd99ffd7a1e124c602c4ea6926828782c7285aedc1bc614d985812821, 0x56514f6dfebada637dedaa846645d33402bb7738d69fe761ab748949bea78230, 0xa5002bf6d9e7109c4214e1a3628aeddd0f86aac66ec78344ff0214e72fa80c90, 0x4c14510e62dd96864d6ae924825ded6a5ce64410722ea8ea8684ad9d14f3e0b4, 0xd4cd52c6389b7db327822cb5277b351825901998fa85b47b790dd6a4ee8b23ff, 0x71d86fb0c6bc74891982a5944f92a5c1654611267261d94243665e993e847b49, 0xf3fe3b6359ba586d755c6e3a1cf999d6dbe568476e9d819a9b3a8dc7a5e4f63a, 0x90d36b97988b03b4dc33c43d08ce98a890f175a516b9e2ed61e9c7b83a30364e, 0xadbaad9420739da8a0aabfb48a253c672da3b2dd728e1ab4a8cce89bf06488b8, 0x99a8a42cd1d4a3d8b886f8f16b3d9c772306ee803cfcb9051687d960b03f1f4e, 0x3c0e6c09b4aa08c6e4e8b95f429e349fd947c573f5a2bc7b5f443266b67c097c, 0x56dca91daec3a488367e36bd00e31c482bc39f4a6a0e701239cede2d54bf06ee, 0x7357c545a39076060855700a4854db3df04a4d75ac88eefc1d06e82285f2ef2e, 0x6e625c86b9ba6830ff7117efe7c2c9f658b61ad674eaf311916244a9fc539cfe, 0x6e59253bfbbfc4d7ba6834608d6b9936ce5f46ecda463253279b9212d6d053ab, 0x6ab7dbfdd47a41407d4718e471379ba288c6ffe5c37a779b109b05986d1dd4fc, 0xfcad78e10a4cff06f71b2fa699c49f96cfa268a4719f5cf5e13e98fcb3c97420, 0x3e9453e2592508dde64e300f0935b328e8fd7c45c77cb504c332d871dae7ae9e, 0xd65725ad6427fac422e597075fcf1f4e345ea220c6df5ab5182237f0b00225ee, 0xf33c589a63905ce9bac68a87b714769fca22476cdde06328159cd562bff17569, 0xfdd0dad0ab75f77d7f48c44ff5fcd7b1fda1c6b59aa426ad975400f00588dc65, 0xca85855616b2fe3084b338ff41051541c4aa7bb623cb5a5ae38d79c1307bfa9e, 0x34eae95633f75f7d9ea8b78ca197abf38c4e69e95464aad1c6e102d36c1f4a13, 0xb971c43c261618c35e01e2bc6cf638ca6be8f5c66aa5d5d643de8fe85bfbe2bc, 0x727a39e4ba6db3a9160651292c1b7855e9f199439e38b502d3d4bef0f8207a56, 0x759f0171bc009cdcdb077330d00665d61a05ee611f6077d83890a3f27b48ada5, 0x0e28de0d9f6a75a8c66a3f71153382a2dd63dc114c0476c92936674ef33897de, 0x326f31f60dab91f8dabf157069e2668d593401cc0644d631498f966cf9b68929, 0xefb3b827cf15b1f33a1f260454873645998b6fa8a22bf5156fda2d4902f993f1, 0x9b36cf22f9f126053548b2b5918ee56797e6ce780f732af2bf0ab3a11bcf4521, 0x65648e6c60d1a45ce9c35b0491e383bf8b82aed626e60b6078e3e2c9def8b7f2, 0xcc6ef6582b248bcc48768adaad3b2b4d25ccdbaf514bc58843d16fd26f0d6653, 0x386e742c2935a633358d0c92634d74616fbed69fbba309fdf6a1e6df415f72fe, 0x9a68e684f5a94dfbc5d2be116b5d015b7c8e59e60500de37d643195239200ef4, 0x009fa71f81d03f7fdf49fa2d7f6b3eef698869b3d818a4b5cf97f2865c5a2c4b, 0x14dc1491a3b4f1138c25bef0e66e3e801d77bd6be0ca04f33fbcd0edbe2752ad, 0x97284364d33456e3644473b4d81431ab4a459ef51cda1dc02711beda68fe8cf5, 0xec528931c8f61f9e6b43ce8d38d4342b99dcab639b624c3d416d16685c685263, 0xda644e78084a75fd062802909dc5112b1f6f2599e4dede92760031f3b4c591c5, 0x1a03e3a7dc8de28e3dd72ae6a0728ece4c6b06793dd0486c003fe12796b874bd, 0x0189f4b9195c1aa955630e7beb85ce978810abb8aebbc04b2068b011d47dfeb6, 0x9280ec1e46138f63621e922b1feadd85095d71c96d3983bf4d649deeb92ba59c, 0xbe68b3c32220d5eaac7aeeee470936a8d8b096577099cdd3e6d18d2ac0a87151, 0x55d948f68b852733ddc49ecc05b5aea5e639c3dfff734b0ff7ce07f16045d0ed, 0x77ca2cb78331f4e64fe751a4dec902d838aef87a3e335c4ea41386bfb368907b, 0xccb0225cbbea9b5925bc4f0aeebd745c3b0aeef969b63c91a793858e8074d47d, 0x804363713e741c1f7f45c773147ef178ff3208436e8e0dc743718288b43b9ed9, 0x0af218274455e015032f234d5aac28b8bc73b6cbdea1c61c5ab3fd0cefe48525, 0x39d182e5391c881b497ca8087c681e01c2f8b3535782c24ae7fe1ca173fb5992, 0x5ddbfe891059e0ce32e482344e0935c6133f7ad00bd895e95fe33b4dad258920, 0xd620df44d48f777f46de12335397fc845333a0126a208161f0e64f6c01227796, 0x226f69f12ad203641878e459525ed9626e644bfc15919094869a3d801c9c0ecc, 0xf5f58e6e9bed3ab40dee87d5019ad2d2b8f47efd337b35a875045245bbad5d67, 0x9f26bcc76ed674407221f7a299a293e41d9b3d0bae62dfe03b0271f661178269, 0xd61d588fe8a9bf21d433e2db8affe0cdcf4492a574e9d9559f00bfce543dfee4, 0x0e449d7c29926f7f42b3c019eeee7f726113338b313734243a9862c7b4578135, 0x5af39e4bed756fb34e7a1fa3108dd956e609412560c479991eb5326dae38c408, 0xcaf425790b4f11a934699f0bd5b4703c69629702ad3fcbaf444e808fe8e43744, 0xc8704a3ee308abaf9b6727d5b69eb45c65858c083011dd5e217bc515d862853c, 0x683d767d48210e82249956645d9e3923d2f2e8ceea449bdcaa7a987c3bb6a25d, 0x19204fed98a5522a9899f49fc88424c0fe785ff62776e5351282e45c69e03684, 0x309999019b34aafe6b6521e7704448d696948d42476ef9a298b62d50cf2fbbf8, 0x98a6049449a14f63a19e4ccbeef4f351c7fea75450e3e5b6e4ca62e9c5dff999, 0x7b6608f1c8b6d0969a2cbf8151839471993ffcd0d24cca8a156542aa2db159b8, 0x1046ab48102dab40ad10bdfe2114097a2551d9fe15885c6b5b35490fd3e478c3, 0xdd01b92b1285f8b4c6c0e623900a7b80de772d07b4643957179e814be84de896, 0x709846627e93f497d5c6f702a8651551936325addfee7bcf0747a88cb528a8c1, 0x61267efb05547bd2388f3837ea62f40ed5d9d72f01bdb7a0fda73bd3c3119a9a, 0x8bdc8bcdc16a36424ef23de6d930d80dd6d88c6cb0e6a0d8cc60b105c73d1806, 0xda833d8d79abb35fce5345cb02d74dfd87a99a75328fcdf007106f67a1b5301c, 0xbb4185661ec5f4c2a63ab25bab90fe0a6bb36c4ecb6533e42e524f754f9696c0, 0xaef44038e7eb0b170c8a82ad11d1cc686729c9aaec6ce4dd4a1127612b1c3a8d, 0x909fc8262f75b0472f3fb397497c84f6b8f97d132fe2ee82b685fd2a137455c8, 0x7860feaef381554bfc982b32cd687fbd7418c403d48e2d77a7e47c327a605fe0, 0xdc713bd43bc5f00a425ff71d64a1a8368fe22c3df835aca243cc6be52b7bc0e8, 0x9277345a9120bec4d08e0c44e01d1ed9e5bf5f09deb299cdb3f280ea64ff3de8, 0x130fa4e2ca893d89b99873c81c3bcccb4f13c9b479f074ec787210cb234840a4, 0x4267968bcbaba58e06a823ecec0a489e36dc28336f25896e63c695b39a146629, 0x4b3a8d7788d34efdaf334dc26484746ff533b59d3e25354f9e8bd7ee35f92047, 0x93b5d4a57dec443c6085f8de0c221f845251d08e2fb1a82759ce2358f3ce1edd, 0x14c48b62b094c72fa0d7bdfcfc5364110e1175ca66e41456485f3c26927423f5, 0x72d0baaff9861ad77fa8739eee6edc90570791f709b17f088462281eee1bc22a, 0xa03e36d7700917fab8438e447818a185265cfff930e6dddb95d71ca740c27980, 0x6de47ac8608a2b1d60015015058085ed3bc42e5746b1c8055800ccad0711791a, 0x93d46e57a3137471df420add98700f1457b01b25312dac1658fe5d09593e820a, 0x6fffcbca1475d4fb05feb8fcf6df7a09f44ec20e8552efb5b24253178bff3353, 0x32947a96473e7133817da7a0dda02e682b815303a0ba4ee41eb15bd2d8f1f3c5, 0x89b0c80fec6ad197aad0ea71ce6bddbcc0e706b30e9b80245eb29023ff31ae2c, 0xae608ebc9d74eb26a0cd0b4b8284330eff6c0af757498ef2c828987e35cd0551, 0xa58ac0ec912b2d1dfd165127f44152f5d91d3f52b5e53461ef85df4fae7018a1, 0xeeb375b978ff4d84320d308897bd09227de2922f3643b635dcc0810695fb24dd, 0xd553ba60f620ab0c9f15ed48269c8fcf5664ce769cd153a12f538bf14adfae26, 0x4b70bf3c8da748fc6092369349177ac6f4ab4a009c7b3bb0371a55a625aa3c35, 0x43c4ae9612777f59ccd1721af294522ea0bbd57a6a574b3582508cf24742e233, 0x8c0ed435d8e7bcb579e9c9ef8f88e23c4e3169a448efccaaa1ac6766d1b1e407, 0xc9b234a62988d4d926cca1649b7914581c6397fb2f48e047af06adbb6d838eee, 0xd1f1b0887f98dc32fc69e0a830ccef354679ff72c0fcbe32efa1ffde52178e4a, 0x7c26ec90dd3ca9e549577e2ba68afa0e9f963dffb532ba79b89a51ab71c8d200, 0x48c0502daa9c28d82e1f8b2c99a7d505e3f1fea6cea035c9c00b5b00fa544056, 0x23a05e31959b69b4c0e3d37158d4c9c02b862e3028fe9acbb431ecb1d3f0d766, 0xe71397ab819b57ee5baebce73d6a23d11344410cc44a79db0c5983859834de61, 0xd43d95779a716749744ba45575fdfaa828ceb2cc18508d82fd9412b700215dc3, 0x8558ee5bd2f87db670435a41e25948a4210ef65bd61ee8bf8083e141e7241160, 0x2c59c2cc3546cc08679502c01161f50e8572d1143fea5b9cbb15246d61ed576f, 0x3f4b033dbc257c20b24cf893b5ad41e473e6e519a02f9a6957e7107322c32e59, 0x8b02e7ff4b049348c24333338156d249b23e5d23bcd5ed3ddcc21200baf77e8c, 0x7f58f06a536de06f85be2f5d6ea788dbd2cb567a2a492c7d0eb6782dfa6dded0, 0xc6183b0172834b9ea954737fe5752fad7574e52b5dfb384c24b9ed6e138f4f83, 0x2a5de140a6b06145ad407a58041ff5f2b1db799a1b201232110a85f2e09bbb8c, 0xe8cbd3e938504af0cb267203ee52ef6cfcc02c2ecc708642ce941edd82180b62, 0xa3040b5c143e92d91250b51c09c070b5f1079c27af66a068599ca4c8bf12764d, 0x83f09d23188af92b1ff2538b9ee495c4eb447d64516f912ff5b16a996014c154, 0xfb24ac349ab6ecb70d4e8f5739ee50a76972a42967a17d2ee711676da67bcb36, 0xac1557817dc9faea7a420bb0df338aa5f696b5e216067036e3cad20af839cb3c, 0xd451cd4a79f6a7562c98487589952eefbe33973a4ef320cb3d76b870fa3aa202, 0x16fe3ea3fba15c0ac8448fb61e3b8fba11f5d020489675b9f9c7bb9f62f76b44, 0x53fd7db8cf32b163917071183dade9868e6e3e18106b0577d19776cb877fabbf, 0x977a44b018fcde3a10db718b832d4233d287546513c9d9d0b69432d3f4f540ca, 0x5039a3fe4c1660e5c19f51f920c043d6bfedfc2669b12b811ec628a90894cd52, 0x204b7d47077d03e0e75092341b8f187cf195e32783b1c246b456241a9a407899, 0x05198fe10016b7db0c7a0fbb0b6f09032f9d1bbdb548b7e91d7c8069ae14c0c4, 0x15e3c809bfbc8666d8265a2fea9607ba160f0b2c70b57d6df361f4981220bf16, 0x277f77e62fee23ab32bf066f96a4f248c438ab7f9bbd651c71d7ba1442946c68, 0xde7050f1bd892c73ff65a163d183dc7556f009ce7c3d62ce6b794e8ac667e061, 0x809d30b1efbcd8f2ca39c4385927a5a7414a246ae6aa3436246537b99d8688e4, 0x97521e5cdd428cadd9803dcd1b82527e6793ddc210a0050e4a6a55a0be4b9c00, 0x50327ed8f7a8ef321de5ab693e2f6c29a12debe57d1e00b22881ddf2e1004b55, 0x66acbef282cac22248caab0e6fb68cf3675f8a578067aee67a2c7c79b342d7a8, 0x1f5fd62b8fe3631ce8053e57e1acdc9d5797b4630c1f3ff252aa3d27ed003209, 0x87164f15ffb6a049c1d1afb25ba23bb06e426bdc34570f58557dc64b62292b48, 0x02e18a6add9f5e9b31c940656ddf0aac2f5c91b8ca45940daf0e2bb26b420c27, 0x9f51fb13f78d9211a6bd17545be1e3b862c9c553789c716129d4922a9439641a, 0x84f8a53cfdb9295ce354ee54548a187d87c2fba4ae78997b2cc01c68521c415e, 0xb7be4a4b39447e83e213f4410eec54cbab7879d425f1129874b168ad33e8b9c0, 0x4748c03d3a66c77ad2a845950190822ffe9f3bc5077a39f2d386928dade2ba09, 0x0074e4cf4e394feef0141aaba17c10e943533f486fc82c94e161c2c7366ae266, 0x69d5d7ffd7e772ebecbdaaa6e207b3f6e562d67cd19cbcdd0571f85454a315f6, 0x5709146adf5347dd882406ba8ead0d5aadae1ef699e65057ebe6a1eeb145e557, 0xcb11ba2300724577e5ec9342a44ed2f10d0ea613bbf9dc10b14fcdbfb35259c1, 0x5dcae01e96c7af39cc3a80e34e39cab222e19a65eefe2bb0c2de87b221c49592, 0xc6835fc34b2cc85df4b7d8db31c4eebc71a309e12c7d22620ea9e9a92689b54b, 0x8052eb32702f88d0f33d9628e1dba9caa48a104698e90e3de86b41639d82ad34, 0xe6ef253444736af98ab8edb1f96ecff54ec89eff273149098b5e09342da08b7a, 0x3d1f0aa4175bb0d10b4db96fa2f3afbaf877a197d39aa231fce872bcaed1565a, 0x9c8f17b46f18f5d7f89ffe471e7b8df2186d526114e74d9e29b82fa9101ab367, 0x2c61e7a81b09f48cc94b1160dbb3ffc83bb739f0ef993081ee01979492808079, 0xf0ec7bda83b1f04f9944de6260f61d3bc08c27681d05d4fea5bbbe6f4d0616ce, 0xf2b6bb5416342cf22e13eb34ddf8d72c4eae7de6fd5ccaf18c0ccd55673702c1, 0xb06d993008d1bf0999e2e216a5a2d40de69e541a2ad0146567edaeef676c88ce, 0xabafa17eab2eec001a165c567da9affaa71b2225dc691814fd1accb178702348, 0xe203a4f1a56e34dde7eeb9fc5edcad1085b384d148ee0f68563f7416bd38e830, 0xd1f48b894b1aa4a6836d6531bd948f1a513a147fca25b2aa5b49bdcdb15082f7, 0x55aa2e6cf53c5bd8777dadf89c40eb78137fa3fda4d6e26aabccb934942c82f6, 0x4c05e520e57e654c495a73b6678686d215d8f16e7ef9813bfa8bf54f11303879, 0x8c147558c1edb8e3747176b42b698ec4526ffb864fae600b9a1ab817fb895bf7, 0xd48e2f394a88fad323392718540a8c70d0b1bae26ed17a79cc6c10fed68d76d9, 0x85d6920e5e8ac1365b5e2db3d2a15d03f2ab59f79bb6ebfb8ceeb36f91c22c0e, 0xf7d7d78adcb8310de563fde2ec7a7dec7e1635ac1688b3c2a748f075109ecb42, 0x4b690ef2f67b446d35e8045f746886325e1b56d9c1c7cffad561bc0d18f891d0, 0xe4bc9aac5dfe91a3e23a800a2efea346931751af5a5aa2a1f8b4286f1d880e9f, 0xebd84efd75975f3fcdc0734fba40ba00779fd5c372371b934a3dd8cae0f016b7, 0xa58b9e8601e2187d72e202e02ea2bc54565aa8510560ab412cc0a37b2f28012f, 0x342e00fbc3682c2e0d48bc4c126fa86982657636ddeccc94238250c35f8cf158, 0xe0de6843a944e9e835250714a3a27aae433f1e30f3c2a51579cc6a4aeec9dc3d, 0xdb6875530d3f7d38493cda4b7c7b5cd9f73b8bfb0d6b43bc408d983a4c2a0b66, 0xbdbb39c881dbe9eec90635d6626dc2592e8edd7bd9aba9870ab60cd1b1061957, 0x4d47c5ef8c4d3337d69f9688b32c452ad32b22029969576cb2bd57479d33082f, 0x16987857d138c1099b5ad529eff1263ab0933696098044af1403469b74a9793a, 0xbf8ede55247c795445d297f2d20f3ba2c24b016a680c42c21eedc0611a3900b8, 0x171fe0c00c70f4013c3d0a907f150ee87b0ab7b97a83d371cf554bf9a992e7b1, 0xedeed0dbec35d1a0fbb202e5a18665ee761378a40cf204376579c79dbb272cd8, 0x58081a2d78a00554ffd053111e5d540a066831e7e3709745857c4b0f05aede35, 0x9c516d873925ca78526a6491340bbb2276b23af7cdbdbc98a4fbabe53de9ac2d, 0xfa3d598cf80e4442150e6f212b8ac841bfefaeb6f4a4f6173f576114e745510f, 0x5af43f7a0fb1cb439a7c63f92f398d685b646aba59f3c613bf522a690629ccec, 0x75efedba484dc59626fe7a684ba143b072248e7644f5369e218539fe46368f43, 0x3f0cad1abca7ebe585118ebb46e5c00709fc53e83cd09930f599a1f324a6d7c4, 0x71aadef439a84ead4fdfd62b3b83bd90437456e92aad26e4ea9e4c12f3c3f310, 0xa9ec39500a9a17b183f37e8d45ecaa29fe3d7de40b1136345ac513ba17685151, 0x18ec6db4f7b0defd14924b5e0172dd9ff455028bc1cbf545afc811a5a4dd9ea0, 0x45470121208cea39a56c065b55ff7655c6ccd73efae611ad2007ba233608b4c5, 0x0e8eb22801d646947e1815c271d5ac907e39d456ed9bbd5973245330c745ab45, 0xdaea35cbed9ebfa90e6cccb3f0e5f121b43da94aabc544b63da59bd32e5c36f2, 0x4b5ee46053000cb7213a9b86eb64c4a6befd59e8920e4e50f9e3a833d3e6dc69, 0x2fb44c88ec4754e667a3d1fe0c095922573bd90bd550e69cbc2dbeb6494b5c17, 0x450a7b97972068077f2f34a2b59cb0b2e8f6456389288aba3784bf8d47b3788e, 0x5f0bd4bf7fa6c0ef5fce43bc48f0eb183444da109a653c5a9e1f703aa61210f1, 0x6beba149eeebe9e46f9a58e4c40909dea883864cb35bc668eb1e82901934f92c, 0x90cd1d4234fb5fcf8369f1149e8aeba220056467f295306d73ed7e90e4cc69d9, 0xfa3a5ea171cd4006703aef6bfbf1e8f59ac781179766bf4572c1ad4aeea88714, 0x0d297054d756007b8f339de0121be4d3a514316308ec9fee5e0311ad0d34f5b6, 0x243b121f1c56e4a809a352140873ba9d02e643bafeabceb4a0f97bd3f687c638, 0xd1219d86cb52041e5816d280d73006fac66b204181b6416c731bf22ab5d32da9, 0x1a243c45faae6ec84041ffd196a2b079138da602430e13dc3660985daf9dc827, 0x6ca6ca5a7f2f92a45d9ddeff577f276234649fb5e0eeab5b4b6ca6ffc2c50028, 0x8cedd0c778080c308e3505a76b0cd42a629a5fa65e4e23515b231866b3acd727, 0x0ce58864c446c27527f4bc791082e1e48dab66f2658b791e6af19517611eb5d6, 0xffde22e34ad5d6a968baffbb324cf133807789ea829cddec1685744c452e7a6e, 0xcf1b7e8edff940245ade0962e1de1a4b84cfe065b55cdfffa8dd71e5f7bfaea8, 0x90cc5456b57afaa2aff02a2b629346ffcfb2ad494bbd2513fff2eab50d2e04b3, 0x82dce6606cab60f27d9f47a8bd05fb547415d9adcdf8f09125026c89915d71f6, 0x9f728ed50599be7c3cc18d735856d177e2f05697472c3b45c29373a9bc760134, 0xa3c1d325f450d824a3381fdbd6d78f91798e9b805df2975d8a03be302704305e, 0x0419b0c0e79f938b2139988e3db630637efbf2f948162204a6ea6fa9ef9dfe84, 0x052179692aa5dac55140604b2cff131e7b49508bb4c4855c909adb46a02faa4c, 0x3d63e6de2ebb9d2fc5c2bb6f802bc4df22bcba7d9380dcd5708650facf82356a, 0x79994f795f422e27c66d39e9c4f4323ff00b5961784c06ced8953fc4550b3cdb, 0x471eaab72abf2497eaf977a8b99f6824678efcc536ade1f8533927869e12202b, 0x81ffa8383ad84944edf0daccec24c7f4839df8746780e39730e578f60e64d98c, 0x9ea7113899da4b90ebf40c338169b26887b84c416c0c41108d62d18f7518ddf6, 0x31387e079708bf8c26b2723f7771f981bf5c28c2c0ad0bc3a91651924b5ad290, 0x8536490839dd94d4d464927f9f48fdfb2303c93e79858faf530c26bcdd0c5d9d, 0x389db3aecf8e428258b1594f17ef4211b78e8bc28874eaa27a47deb626cde681, 0x5c7c0f94fb75c7185c6c26480c474f1e2936ced115d1c698ddef6dfb29262cc9, 0xe51e5b416c089d38b1ff47e823b120f96f18f494d95270f8e2f1ede25c743479, 0x0b1a44eae1484b766461c3791bc9d4e503fe96f999f40a8aac064a46eac1ce51, 0xf57c5c589f0a6cef300ad7477273b9bba5e1957361bc83f22db802b6c3acafe0, 0x809741f672b4b817e32c618ce04206f871bb37cc6c4c0482019267cfc4239f4e, 0xcd35907f5f91d334dfe2eb374ee593f4a69c28e7cc8aed187ce55dededcd5bf7, 0xfb8d4ed38bb62413eaac2c60d55466333a6fbebe238ed86aba87ce12f5dea170, 0x61143b850ec702837544cc308c8e18f8b5e2f74055010108abdbf4acaa885c11, 0x17a9cc64d6306bde8d72ef83f79a28af3c6e09c65c5fdd4e1678b76c132daddd, 0x46dac6c2985de5a214c7622d090e8a31672d81ecf85267adee975f720d93d6b8, 0xbcc376b3ce8f21dae182308b08c166ed8878b83e36591219266d88832d64619a, 0xad2a57962d76376cf9c5ae757ecdcfed590427b8ad9b9ed3e88ab0a6fb5f0946, 0xb6780990336829ed92544c2aafa6597c82e9943020b229f56e570fca0136f802, 0xf9a9d3bf3441e71a800b869e9f46aea402a5631c010e189b090e8788a0d8e885, 0x343ba39f32d3a3f6c98aacfa000324162cb7c2886b224858c98345e31d12fce7, 0xa52bb0a808516259878214a9159d143359f37fe3672fa99435a9274eb8ec8b6c, 0x98d8cceb516e9afd8cc13fa08ed3c05b38943516080917dfe7fdfaa1ebd872f8, 0xfb5288d38c1cc35bfdc8cebdabda660ac42e20df1ad1f0f4f0fda526ba720e35, 0x41afd667de087b76d869d12b26566c66cf60db578307d434b001d5085b9755aa, 0x30ec39976ec1d965ceb9b374105cf60479099816af06563693aee89a04142eaf, 0x258028450da654ba369394128d33120d9475e9fc1dc57fce24c902fa85d50c48, 0xc7d4f6226677845bd6e82939b1d03a069ca3b588f5e0f3a4c95c955a476b75d0, 0x29227a18aac9105132c93d57eeacaf6ffbc7bd6c1f17d2b35d7149bd38463d0f, 0x4caec82c9387fd0ea9395462a82156d3452a4da73090a2057c8e8c76bb8d4fff, 0xf73b8e1bf069564f845df223eba775977465677a4b0455a9281a53284d9a98c5, 0x671d3f906a4f8d880950a587449a0ed4a62cb6868dec4ac8ffe3ccdfef72d811, 0x4905006cf1d96495123bac00e14ba1199219f767c19e948f354eecb18b27bb99, 0xe44d72912fd7be16d577b6d2c7032262a43195b5c7229f89550f69e5dcf92c4d, 0x65e592ecd7a23affc3e4fa2b2cd75a7ae57ecdd35aa6b8db0261a91b957839a3, 0x6a9866ececbe1d3a649ea94eec38f25e7866b1db090903269136297d8211d6fd, 0xf7d30d5410ea1df36b854b4ebc331790ec018b53af9af93ad322265043be74f7, 0x3d6ae776629344a740dd2ff5dee214ff9efe2ad1e435c57ba96ca87611874fb9, 0x677f97a7f97de6c4d6e5a8a1edad1550df835148701ceafe5317276294a3617c, 0x95c5f78d79a260e4ff0cb690fb534dcc8fef86857374e971a5bb23b724b4028d, 0xe5b862ceafc269a96d1f4c9a83ff40cb4deafbeaf7a2bb1e7e6e4b237ac7d095, 0xeb33f938872b87493eb0d9151a920d8f5e2a00effaa38ff592da0c1fbd82f4c8, 0x49945b3361ba804371e9b65abc2d26809aca10e570e39026da0b2e637641f9b9, 0x940343826310784ffcb11e7b3c88d8f1116b41f2f3cec4b28508f0c4b98f2750, 0x6250f0dfa628ca768b256c4ea3c842861a28baa50caf3c02bb65218d6c2e5927, 0x73cb7630aba73cb758908c9170d28688c194e117adc99fec1aaf669b88ef4724, 0x6e12f57d403e556771a5c38ef70221858c385d91acc15efbffbb2aefed25683b, 0x81807d7383138a39c8c147858c96062417c0b9024d581e169eaa8c70b925295c, 0xa4962f307d7e0e30efadb8d49a9b14768a0575048bc760321e866e92e1c13d86, 0x0b2eabc1c99f4e2710ff4b9d7dfccd9a9d51df6763808208914ac537af7f6e1b, 0x000ba080ecef822fb1386e30b2f3ec9e1229229e5abdd19f08e82bc346f7d511, 0xbb1af9498cfb54885c00bd1137c8a57aaa5b5207a77b9c3a5813df406c266d91, 0x224f8d298ad9a4b135c96bd9afe69b3f90cee4b066ae0df7f2d763dd49686992, 0x2ae8fce0f6f56a6efec5f2df6736f395e5f66656b21a9108026c1d93c0dbe38b, 0xd294a49f188fc7a53e62ec63c611ab470c20b29c2c9af614010bbff3ce9b36b3, 0x63c09d1964532f8c064cb2e1957be6c0ff6462d831edae34258d432f6be82800, 0x89f2dca8f137fd3b964d8887517b7c5958ed6583d62cb9e7648e81e6a2ef257c, 0x3dc8eb62bb159a54ee4353bbabb0163e9671ae6be2aa7eae791f520a60020b11, 0xbb8e5aef3022afa7c94cfc1abd3d042a5f25fac5c67b1b3d07ebdfb7093ea3fe, 0xb59e9e49a1ee500dc26af174c59f224a6345f252ca7a18c15ef75f0db7cf04d7, 0x62badde857e1ef37efc87e7dfc6d86ffc429b2d138a161cf310a125d685ebcc2, 0xf6e1b23ad806bbea36fa0d2a9249a1de1beaf5130dc71894e3e7177a58c74401, 0x06bb45769d7e75d9dc7884bfe8f6106ae5fb3a3405644831885edd515506b19f, 0xa60be800c0b7aa63b41b0ef3b2897290eae096c3179a4a5c0bf74c99804fd776, 0xe1a4c63702155265bbf31873443efc633f3463fbe4fc32aa5f3242c6d1adef74, 0x6c5994ad21abdba2c764ab70bc4a16ebd6740629808a72a7c3847adb77a04778, 0x38589339d8e913bbe1d115a831a2dfa26a26758eca20fc91f950ed26e26fcb41, 0xaff05cfe9ae2568c5ec95bd8d1f7d639f27656810ebd64366fc04674d293a193, 0x682465945bd80829204af41ea8c1ec5261c301d5f11b0d268d4a2f3e434a03c6, 0xb91b8c416349e65dd9ed9839d88a126a9e13eeba8b3db6ffc98c69d93821f6e4, 0xd609b14fb13196b398e2da0128f4d4e4d4b80d5bba953b7a16b7788c24436267, 0xf8688c01febbc77c2f279c3e5e8fd63ef6c701f4f4dbdc104aa902ec85ec21b4, 0xc6afad031bbca7ffdb86cb06c0f2de74452b8070585e1d859113896bed5c3ed0, 0x52ed046834e1e87163d3fa25150a8eeafc93965403ac65df56c70480ad3489ce, 0x8a59607d69b0d8e48403ba1347ded1ad9e42edc79e98f13a627dd03640d6bc97, 0x42384dfc76c2261be38b93b48eb560c04112137480398018db428f10223aa14b, 0x356957efc12d4f38d5cf7f2af8f891130ee12ef6fdca19dd79ded7a99af807f4, 0xe85805e529ce96e4e6137e838b4c49f3435341ac5149a6c2e5ab307a060edc3b, 0xda5228d7d32faae13592a2a4bb4a866ac8310e7ef1f2731cc695fcc817fd2ea5, 0xada611d5228ee5544b3c454b12bba526998ee30a59f53e24284c198f6f87b122, 0xdd2cf12ba71c08354333cf8dfa3682c1ce09f762dd046befcb5395c2bcd31998, 0x5bd65148f1f7928edf5c0ce68d0e6b596af51222529b8fa4c34e6519e9b7ff3f, 0xc713430a19fd8329b2a86c7317c7684c6ce24bf8e21b0cd11454a63a2847982c, 0x3f159a6131c681d694d7de16632ecf668882f7a2f0e7f26ab8189d9f285cc106, 0xf600f793827845c73c3ff807de703b2cc313933b11c4592792fdf215b9627d70, 0xba0cf479a5a1ca58cc06b41929e354997b74cd8dffdca1a499977a16e470e34e, 0x0c5a5169b275cbf9a54a14cdba7e9e6dddd20338027c9b1eaaf971ce05a83cc7, 0xb859078a2a8c4e6ea9af794f1e77c5440d6550caa5479343805203672b1a3dad, 0xa715c0be7373550325ba3bf36ad60a32872d2ba8fb04e58eca6d37c5c634f082, 0x7db24a859c583ad266991686d33fd15c28b03174558cad5bdc18ac438eff1a9f, 0xa57d98ef02015a17e629e5d3f02d46966d0e846b4550e4179d5d0b401349f679, 0xec1d1b5af73bfa0e3bb2db2b33f835e4d5e799b69ed327e183c52e0ed078dcc3, 0x4533da2e2504da6a57fa1c3d8bb97571a19638fd2798f2fa235de6c607776a6b, 0x55db1d454121f30ecdda7093a7b09283d90e003f764604c961effef4e7ba9abd, 0xfc5b0db1adcb7288823b81f67bddb1c7e555bf1ae4103f9864ce0f914a1d65d0, 0x93904f1bd136c95e527d74f89f296f9e0efda41ab6c4f2f05ebaebab0665f33c, 0x960e5935f2808ac495a7673d883bbc9f1fb17cdd4aea563e07f242882ab00aee, 0x9f06d1b08bd1709afa711f93121c9273914b4593dc54c2b3f3bbd8d55d5c2ccd, 0x74320342b48eeae7cc2bd448ded30fc2edb70e56dd739b4933c90dd301d5516e, 0x40c395ec14a6d8bbd53c552de98d1193ba0ab2eb49d3b8899ea658b8399c814f, 0x6ecbdc8b817b9b54420d4b5065bb612ce9480d53f9c17543efe3a7c08afb98e7, 0x1393403f5b20e149fda444b509038b057ac8ffc011f8f133860435652f728942, 0xd3e640460fb0b63dc65a137ae1c98ca406fb4dfd96de087e11a5a298649cd961, 0x4229e5243c82d3e961c0a60eda6b44ebd744586d8822daf433dbb43991ab2804, 0x8bd885fda07569ed5a3843a595025669bdbf62b01b9dbb4e451465dd4c56af61, 0xf64d5c027411341b75141ed4a45ec4b713a05c1ebe31cc971f89d22079d036fe, 0x02dc30554f01cbefa971ab69b106a0decfd8ebb9231827325fcf72d058365345, 0xbe9fd93f35f052c80118fb4a0e10bb81938dbcbe59bd2fd3ae424905f4a1b43e, 0xda27bcb34a75485d9984927abab0d3d96eac4e6ec404a92e34d790909a4b1db4, 0x8f22481bf36cc031ab74bf2579b958920a26043499d579ad8e0eaaf52c87d4c6, 0x4f99662d2926bb9cfba3002ae795f7ddfec39501ad05778382de9a1e1dfd6088, 0x8ab3c2c65154b3f6f90ef8147de924a56576da598dd74ccf7efc22c5cf853f02, 0x399f10895f8105041260083765a5ffbd74ea9fab60c1c83394e217e08007ca7a, 0x50619977c6b7f31897eea3dbd300ac16708a8c64e18fd23e207efee0238dd277, 0x2245c028378c16e03424e0554e827f7efd707e45cc5c2ecac422262b9e3261b2, 0x5abafd6b6f411acd16c3dd93c76b52aa0b0052275d8422b005b505cb9c3216b0, 0x0195407ee4965e72d4a5025922922d615e3e849ccfe627f0c9a718d3b68865c0, 0xea8a22c90806af8a3f7c49c1fc3ab71a35b8c2f4672b751db87bcad7e110a2d6, 0x6287820bdbc7eb3ade2a9e7f06be6b6c1b8ef840c514ee61c1da36e46a7e197f, 0xa0b7be5d08e9a8c936670fc5ae276919e3036d50f791937947c0af3f03d6bf19, 0x2f511ab130b867fac5c3808b828be0fbbedd4c628300894969c4207d731a2710, 0xdd4ede3df05df04eb7a5d42a0faea5245bb7ff2cd72089e3252f7c1d2457615d, 0xe983e3bdb071a6ed127865b98842034e34873643484596ac58eebe0c6c596f26, 0x443d2871bcbaffc187f59305255960c2e20c90035b13cf9773438e087b967d57, 0x4cb8281ed639fab4a077b385dabb577265ed6887dc8c246f6908e88d5b7930ee, 0xd5e7f58ef48650773dc1958f4428fb3e2c3c7424a06ff172de3892534807b927, 0x4bea44ae69d735e134a5304dab70f172741dcde3bd76ef4fdb8f653f143bdcf9, 0xb9cdd7b9ddce0e8638a11d40ef5fb1d378ebe298fb41b25f2928d84fe2049675, 0xf31bda66ea3075c1e38bd2d0977fe6ad7fb1b9a8d0204e279087e76ffa4f0d83, 0xebb5f10b7e9d039f878a942e18780998c4e5c97f22244df4eef19f8b8c8adc9b, 0x20394740da47beabdaaa527fc0ce88714a2a7af375384d3bb74058ff37bf080b, 0x0a1a6e1eac6f067f813bf9cb8251475a0bb2626324718718826d90717b43b56a, 0x9f2d9f069eb1c6eb35e353e8dc5ef3ec2e4c96921eb553324fada9f76a21cc4f, 0x1bb7cdd51558f1570dc17d543bf78b901d67fae20118272b4f9af040684b9763, 0xdeb4b214de8d90e3f5bbb0fc5723e24c8cb5d4e733d02ae3c08dffbf2516a170, 0xcf5ff8f9090936fcac00eaa5ab5deeb274be6b953ea05fed64c2a5b1ef006aa2, 0xe766eb6c1932329eb6fb4b74ff3aee342b23d643bfed9260a33b7e78253a31f2, 0x9bc46f3c84fcf468692f85133f42f3d2ef94272d185e7af1622b2b8797681955, 0x1ef41c79e6bcd4ce5dc9b5970f04e8fd3a89cbc9d66fd1b966496bba53b5eea2, 0xc7715d66e85f4eff3d56824449cd2faf045352d45c3a11fb3650b281538130a9, 0xee529a4a5356895c31f93ca692a54414854b856b27301636a1eeb816f13d48d1, 0x97a4d230aad02b175072120e5b3436cdb111c298dbc0c7c9407099456053fa02, 0xc0d660a9463f633eb0089fee8786a7d2acfea8002dd9eab816b94c197397b5a9, 0xbb955c4d0c154ff4936c5d1f4e40e78941bd9a0dab4bfb82899ed10ca4dbcccc, 0xbb127913525e4d68dae4ad1ce3729898a411fe888919dba90b96a4f5b116286f, 0x72bf3f421bd42c41afb9d019650080c5cb16e170d300285d597ebd61da705ad4, 0x34db6178f891375109ddf066bf649cc90ffda67b24f0b2dcedcae39baa7b8890, 0xee9d40b311181b9a74f236d7c9ebc03e2ce718c8a1d8b10e6f66f80cae43d57f, 0x22eced8c71bafa9980579a3ef205b9b4df377fe46ac2d753707ad6fea8df1e23, 0xcc330a2a40cea686279062ba439a6a8d7b83888495a280de38ea2a29e5ad851f, 0x219a728ec5dd515b9c37468c4182b17ca9ef6dda8a413704b87aff6a46ecc580, 0x561a226bd893f85bc4bac0cac1f670067197028448e6a4f9206c87a7f4eb57d9, 0x4f0497680aa7b6aeef61615e1c89b2bebd428111b44159a015a1edfe14ba4faf, 0xea31e602228f15b1f0d42f8d150b420e6b3059c0766ed0d9e647f533dc4d93f3, 0x1505a338c948bd322b8d01edc77c4797e24ccbbef003a4328a27f135de25be3f, 0x24978f44a92ae84f181055f70b0c56e2db3e8510f19486153d3d4db1c6fc3159, 0x415b84ac5bee78047a9516bf1449fa64ef96dccbf7cb2976ea9e4eea0ba8c70a, 0x42b86a965548f5261ceef1a9842569ea6df516d67c5ecfab12af08d9e467b5d9, 0x7fed5d196c46e6625ed52a35fb1e59ae23b0bc42682589778c63c5edafe2505e, 0x7b475da8919e54844b21556fdc03dbc6208d69ab6e184b400644848cbe92ece1, 0x02d900e304141edc7f65944705676b9abb4b9185fcc2fb05484b71945f52f4d5, 0x2bf9e14cd252e197926deb873ded7c03b8315483600966394614b2a555c2a5d5, 0xd813cd28df184625d94252dddea1af6fbdcb0f596b171676df08cd255f542992, 0xac0cb3e4e5b346897cf8c06a100ebbaf36231c0752fadc73d3f453c4528c3c73, 0x29ba9304cca535ac287360d746acf4d8f43e145a192a9c4af716c204ba5f70ce, 0x3cfa99c2e647b905be6f8f188bdc25ff2d2b91649cfdf231c1e168e2293fa2c4, 0xcf8331be45c8b7b843f5a250e166f4c704094d8555e6c4c24a8b33f1718a7ba4, 0x8fbba85d755e659cae5a4bc105e79f2ad64b1db0bce604c9ee79d47b42dee5c9, 0xc64ba167a1e2efab22668cb86a1d7859163a181db81a439dea408a7ec4df0021, 0x05f6bd2b2da764ba4bcce777270cbb6f07e7df7d9ffeda7e2c149e886dfa2e28, 0xb2a43b7f0c7161e21fb791acb1eff239e0ea15b10054de0a8a41881b28259ef8, 0xd6d6afb054beec7a75f2f9a2f0bcc348dc03cdd883c07e700afc3b7fbf791a0b, 0x8677a9cd72232acf159b5d1cf22b6cb12a0e8a55a282648a026d51b9bfa290da, 0xef15cafea0fb50c95689b14eeb8f65cf6fd357f4bf7f330bc0bb211947792871, 0xf95b465a260f5204e430380343615e56d3ad12a2344717507e9a0ecaddd3cd80, 0xef07ead907cbf0e653b94a7901f7c5e22b9a07ac64940853347f8fad4d841927, 0x697d18665e7814936c0004473e48521f19d3df59e3ea08e1f73d618a66d7ea43, 0xbdaedd19afe7fb006029a5188526b0b8151bcfb94c1b9ae95eb649369e786d11, 0xd109569caa2dd1f823502b4bc6a43689ed9f72ed56b1a285cad67f5249eda5f9, 0x009fcdb1840e045d5b141f123abc8718d013175f5a42faf3183fed48b46bf05d, 0x37bcb8a542f561ba537bd935685dd84630d14fb36a22f9fab645a3bd6e30c708, 0xd51a73cb8ae979874fbabfb6914ab9e6924f2d0d44680af88ce27977871367a7, 0x4af6fcea13b1d3a7fecec5183b86a64992bad775f27d68b60470d65173e9e741, 0xc42c082956fb4036dd14d2375801355a7702a143042cf06a01f006fec52f63df, 0x8dddad8bda597236317f1547ab2e8bb50943d74ba2c52b010406717cc9b5ec3b, 0xa6fdcef115ce969eef2224702299219b25e9bc1a2acb42eee7cf2634253a9dc6, 0xee8cfeb71af3efde07877149291d8ba4d2e3101b0b7a6c741a41fe8771109d38, 0x9eadce0ee48273d1cd9662753e44a01ec3bb6c6269c247e5ac7b0ca5d2d6fd90, 0xc837ab63e80abd27fa3353c3974c5a2b7bcd979f68fd0f9bbda96f176cda96f6, 0x6b9cac2d45ce0a36def870c45160501ee7b7c53d805b80392d186ddcd993f1d6, 0x048a50b73f5240a6f0adeb37c9b599926e1e0a442e3da14ad6eb4efe0dffc2e8, 0xebfee3df0b37beb81df5e58e2c29ceac61d80eb35dcf97ad2e4a365fc7afa3eb, 0xc2fac4532b0881bb267f7d3399e2827d59572486eb35673ee9b11a24d2dabeb9, 0x32f4ac0c9ad04e9603c09afb5719280b9bfd18a072189ec6ae7b425a3e332a46, 0x98ce2c7978dd440e1cb5ec200f3dcb24a41c1c18c6f8e9c1bc5f942e293b6d2f, 0x90872529a2d3ea441eed3e0dd8237df901b92a3e938acb89bb56eb8966d3f1b8, 0xb79fb65f3b396799dac5ef83ae273f4e0ad5c8ef2d0c1666db2936422e8db53e, 0x7f1fbdd1f6ab31eadf0b8012d68ae9f2299b2ebdeff664c7a76c99ca59b8a958, 0x7896efaa084194567f5f1a0155d0d4d571f105ebdbb3e323287941517810d7ba, 0xc047e35b7fd0080ee9c6fda271b8ab054d8ca3afd542cd6db9c0eb8bf1b99ccd, 0xd7199667e4fe88ef55f3845689e670b8f1dcf1ad48af90518fcfbc0b0d3a0506, 0xc60d7e78cc35aaf36f1bda4933ac441d6e5011411e165d8fdfeb62190d13742f, 0x5a8fc4ffc213b9892f2390e760160b4292cee4727ab8402483e99469aa5a537b, 0x130ec8edcddcb39d382c60b81357b809443257d35f7fb5f7a620d3cd85c8411a, 0x1462f32c42069a49ecd0ff89d9b8ca6903acfb1ed34969a5ea3ff32478c49de7, 0x0e400fe520923173c35dcde6afeef27b71868539ba26eed73adad23cc1ffd21d, 0x1d8b92f9daf96c3d785c564f742b912dac842bddad8386d7d5b90e56c8ecb96d, 0x37fdaa0dc7319aa5ec9708032569580be4147c7d0c5a7dde646bcf2da7529890, 0xdae55b124b3a64b41b9058908c31623df2f753c9473dd50e6f916878a9f669cb, 0x40975bdf8775386a42ab199a838cc870f20192c8a5a5fc2b2c30bb7a4a788e5d, 0x09bdce03b7d6014da5e6a5ebf0678bf9cd74d7803ac0ae39f846119400df8cee, 0x0240fd470e6ab28a9781d6c7678e53798a21d2bb970c12f8bb68e9268231f717, 0x950c17876193f4cc592b91a8fc8fb1cacf390a139bdcc51c0968895b2ea5fefb, 0x82920c7f782649b922d442c85d6785d469488d86362ffce7ad171a0b3d22ed25, 0x0f3c30edfdc7e6c6da6321673d100854972be47c3737811d01de9dc163c065bd, 0xd828a3185456c6b2687e1c375db095e3e2573e63d70b10c4bafeae2042b06e67, 0x0f99d60c135aeba05c90d4405557f3530a4a6f56ffc8c270d356c62b127c81ef, 0x6dd92970b2933b0842f0fedccb7a9a9233cdc15d72bceaa6a087b0b902bf6d04, 0x277c61ac5138a2e520857ae595eb133c5bcc93186b83f3c50d30f6f30eb13c84, 0x60f6d8d9e1cc5615b63ffc010a85918ac788ef2a1043656a49333388c62d4df2, 0x75edd98367e7c0ae1dddb98dc3f578e920d009b9847e56d0402dc7b772330ec3, 0x4d1302df9f64530b92a2ddac7a27283a34baafaa8a124fa83c17fc9db0c51b01, 0xef67262558343f035e12c1a1e2b4d700dfca203000e4e8859695349f5388e0d9, 0x1edc64cbc18638ccc528294492df1673f8609133487cb2c5d336cb983ec0e23c, 0x845f9eb9226b9a027f8bb977fad767d7175ad2376a8a30e05a7cda9d03e33165, 0x286eaccf4876643b680bf71154ce7ab52323449e401ebd3ca38f5e6c86960c33, 0x4b97fd63e587ba1bbf7f7f000c514a4db4c5bf25acd87a31874ac4a1cc9cfa45, 0x028003c645eabe5871a911543de3eee72a3e14fbf63d421808c30756b0a535b2, 0xef72a90edf0613a49e6513dc08ff1b474ce8dc60637362ac003d00f8464eb2f6, 0xdbdc7d846636bbc4e2b5e0a4058e1d502d1fe59d9e8cf25bfa90226ef69df200, 0x68f63f73703fa2e197616b7af997c0438a6cc7475e4cd1b8777d41e8a16933b7, 0xde6f640e4b109fba4c204a3f0fb17d462e1baffa3e745369f0c78dce2db59b70, 0xb65cc609089914ef56edc199bbb7d0708ba71e4a4f91898ca55b1cb8923bc7b4, 0xcac6dbc2d937ee1d441a22c250f7982d62328f1a80fa84046c04b893ac8f7d22, 0x7a65c50448448ac72296bdde5b2f241832be6e8af5fc469bdc2c6db67801bdab, 0x911ec952b8694f42cdb2057398383342c68c425c29d0201849f86a451fab507e, 0x8edb27568c165cb9ecaa4f30bb31b60ad3cc4e16aaab0d2479b11216b0505e98, 0xf7e874ed64e3a59a9e6129a4d57e5be6902893be6a09e0389f8866c54795d7c7, 0xf2085dc39f350256f99215a3094b33ef4b9a98b3e86eded1369a8c0c346f5447, 0x6e160771c14785a7cb259577367a167da7b2eda5d70fc4053b56ebb6e8bee825, 0x3fc521e2ed2f88d47b24e71a42d030cbd48383f75d47d4ae2bd0d1380cbc47ec, 0xb51bedede8b88986a693d8c12e4edf08e81bfff72028434aece17e01f6ca8c78, 0x33f29780285b863d59733a0f296cf9985335b2bb9e047081fb3e097d0724f74a, 0x61977c42e1f71573d404913fdb11a2d2643536520e7aa03c226ef4f046f09a40, 0x025671275c672eeea24c3ce09e835409c67770f9010e84170b298c5a69c61f4b, 0x75f8d1d7b66304eac10ee2f4586146bb52bbb98ff0be2b8197cc4d8b14a92ae1, 0x704e2557af4b6d2dd7d82436505a60562b7351aa179059ca94f74ecc20a29ab8, 0xcf18a49cd56e298a6c84657ba4f78f78c61801790bf6cdcb062352df1d086939, 0xaa7b2ab865ef4964a398412131e62da9fa6ed3e135f9700ceb4734b3b56c41a8, 0xedd0dca4feb25755536b9fc08c49f8c3c49c124a725c7f2090e2ad1160ed58c9, 0x96da9a07a137660d6e60cd916217462a9511aea8cd078c430a882daf7bef17d9, 0xaf263671c3407f1331f5d9eb93572732d13a9c658458233249ca958866bcb9a7, 0x99b23f3ecf5a4786c87075f7583f5ae9c0545533763d06c15a50e14a9c238e0e, 0x1cc248b1694c3d8106f2b5f05ee5be455244596045f4ede8f65dc1731c3a1542, 0x0ffe9a55425766e34c175c6745d979ee4f8dec3c9f0be810dd79cb904aa36392, 0x6ee19dde4e93a03085c728d26e7cf67e1f517fe3e004a27a39b83a8a4b2aba59, 0xf829f757ac8bc270be51ee60f0f5796ad8dd707409d2e5108f0146176c3a9160, 0x0b6cb2a1f2fde02af0eeb646e31fffa636564daed562b766e3f88b102ae1ca07, 0xebb24fa20f6a626f6080c73c50ccd950ead4a134010e36a3649fa38126d42821, 0xf3dd9ab4131c40ed4c169715efaf2038942030edf84724344f43c690368bbdfe, 0xafc37f099831035ce55b0c0a6b5f8f2ce3eef0499d82ae1d4adc565ebd643966, 0x4059f2d3dfbdb2b9c4db1d755e91ed052ced7c92c5dbc738dedfe51d63b4b00c, 0x53d89ca80d9aa46b83830c4c49aa4de84ee1279a9d12a5b5708a8017385d460b, 0x4a0724dd1b56cc9e22cafc1bcc1f9afe193829522b8438a1183f8b4c7d4ee93b, 0xcc67b4c216f7ca590fe3239236c273558e4c67d272946aa652cc8f64d0d1d675, 0x756630b9c30969adef4d3bd75334ab3188a92090b6d5d2e95d593729a61ac0c3, 0xc51c41afc7a7c772c553c4d80dedc98966a23e3daad69bca87cea804f05aa012, 0x45038ce21a993fde4b1b06eb86566b25aec20ce7e46a11ab9e187ff3b74cc0ac, 0x12404a9617d3c902b914bd20b15e0f307399f33c6c0c0a294c99d65fa1677237, 0x397a0252370668e464e4a00f2ea80218ea0c1d980d095fe971361ddb5e08fc86, 0x0ba779d88db8a6bea7e737ad12e08cbfddc8bf1b75448f1b5e50514a3564002b, 0x869a980c3f4765838b890d0f161711026cf207677aafa18327637b46da39d917, 0x9476b39ff0014278981cda7f6440db452a50f39757355f2c6ca2f601bc061a53, 0x8cd3772589b43f4321553c3b068341aa802f5daec00f8a31e860097adaf1239c, 0xdc7bc1343b4a9a5000e83fd7a366f619f2ba7eb424502d6d874db34af7af384c, 0xa085b2650985327dd6ad736345084284f116963c8ea9fbe9254e6240b13eeb4a, 0xb387a891d5f76aacbd186c08727a35260d6803b16e76439d542e91a8f45d897a, 0xe4654e733d4503c306418a4a1487d0e775a3a77ac06eafa1485d6e79b5d08580, 0xc523d973d7fdfb0c5630884b20288ef15bd00802a97aa0b225df9ba1ca2b5463, 0x2e3b50ff89121202ebb728125bb6abae76c0544ca4b496e6e207cf8ce79a53b7, 0x68729d0b87f3ff1f679169f3ecc7bf32035fecc1fd91291daa69512752b298b6, 0x3c0b05909f8064ad029e5edd774f6dbd3a74cc93dc8b0c6efabcfd8395a89486, 0xa95a6dc19f8b4934a5c947ccb0166a424be4bfbbcacf93b8eb228b780f3e3564, 0xf412e66c2f10439e5bcfb94aca173d4db126b53c07186f4578f30d4c502b4f17, 0x0ae16bc39b989d06eb5b2dcbbb6e917f7462fee2934a98b822142b54ad9e8d46, 0xc30f16fc3150d4e028127025a389b6f952067a6c216eefbbbefb080c64c021b4, 0x785eae4e430f517f33c1266b661276a6e986439022b257ae635ac22630ec7330, 0x93b3673983157ce91230e30b13f4d5003ecc7619efabfc1441324d4439417bd1, 0xb0dfed624381d7b4786f6478dd23475130b35b460f96e56cfb3642b5d36c7f26, 0x659d8e15cf2f77ba781a5d63306bd50c389051a365d4f9323b3b95b3a3028602, 0x2f5e9e57ff0e0b2a68f0aa74418fa34eacb589d13d1177cb907651671a9fcddb ]; function CheckPacked( uint256 user, uint256 i, uint8 j ) public view returns ( bool ) { return ( ( packed[i] >> shift[j] ) & mask ) == ( user & mask ); } function ErasePacked( uint256 i, uint8 j ) private { packed[i] = packed[i] & ( ~( mask << shift[j] ) ); } function Withdraw() public onlyOwner { payable( msg.sender ).transfer( address( this ).balance ); } function StartMint() public onlyOwner { require( !started, "You've already started the minting." ); started = true; } mapping( address => uint256 ) public mintCounter; uint256 constant price = 2e17; uint256 constant supply = 2000; function MintMain( uint256 i, uint8 j ) public payable { require( started, "Minting has not started yet." ); uint256 n = totalSupply(); require( n < supply, "We're out! Stay tuned for more REMILIA productions ~.o" ); require( mintCounter[ msg.sender ] < 2, "You've minted enough already." ); if ( mintCounter[ msg.sender ] == 1 ) { require( msg.value == price, "Incorrect amount of wei sent." ); } else { require( msg.value == 0, "Incorrect amount of wei sent." ); } require( CheckPacked( uint256( uint160( msg.sender ) ), i, j ), "Oops! Looks like you're not cool enough for this." ); // ErasePacked( i, j ); // One-based, so the TID range is 1-2000. _safeMint( msg.sender, n + 1 ); _safeMint( msg.sender, n + 2 ); mintCounter[ msg.sender ] = mintCounter[ msg.sender ] + 1; } constructor() ERC721( "This User... Banners", "USR" ) { } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"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":"uint256","name":"user","type":"uint256"},{"internalType":"uint256","name":"i","type":"uint256"},{"internalType":"uint8","name":"j","type":"uint8"}],"name":"CheckPacked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"i","type":"uint256"},{"internalType":"uint8","name":"j","type":"uint8"}],"name":"MintMain","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"StartMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"Withdraw","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":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"mintCounter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"baseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"contractURI","type":"string"}],"name":"setContractURI","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":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
600d805460ff191690556001600160401b03600e5561010060409081526000608090815260a09190915260c081815260e0526200004190600f9060046200762a565b506040518061626001604052807f04be77ffb3b583ecac0440bcee416b402c665357240f594ef11d0afa4d5ea90a81526020017fb44d47e48cf746aa687ebad194fd537f6e00582a982f68fe8fd4cc402d935e7d81526020017fe8756b20ee12500070bf378e8b131acfd380c6871b01080854c94941deed934881526020017f294de76fe57ed3692e92b0c507d2b3186f1ccd7be18763ffb9eeb63a217fcfa381526020017f13a207198643788a7e0735cbacdf8e321629d9fe7775b800d8906fc10c34d04f81526020017f18aa4c810bf69d5232c48f10a174933ed3fce20f49b4150e0cdaa625c03ade5681526020017f899e3505a0a21e6e1d610c786805a2deb929a2520e385c8215d0511870299bc081526020017f04a1bfbf6e495b4cb460e0e7c8ffafc27da72beb828d052777c469bc152e3d5881526020017f1702e7463c5a6f6efd2be02625980700a9e266a085531d7c8918dc42a9db48aa81526020017f32ca05b629a946d9c74da6951b8e50390ac8b549eb0f7713da966f2234bfa9d281526020017f29a538fc3566a2e52ef9a1286ae559fd9197f14fa796fcf5f9f9f06534307a2d81526020017f118292dd9689d3ae30e4f2891b2b91d15be9508abdba84aa4e4db4a498a3587281526020017f9a4f432accee31b49419c2d676f2a616e1af8e50e421acc2bfa434a4cc261d4e81526020017fff54643a595176e5b4d09066f2e9448921b23e129b46809c17062ffb6a16b9d881526020017f959ef3c047c7ed15424625b600ab25caadbe595ef6ffa080a8a5a9a9feece11481526020017f7b317f7fff5d2e87ce57f4d98505ead7d961287ff800f7e0be20dae2db14c77181526020017f176f70d7ebab8cf701e30b141b03e11f2cfe60e773472869c0ac1a8055f2edf681526020017f88087ee12d44dcc8e17afe3a01faeffdb7e13679db6c5e6cb3fc2c3cec4ce00081526020017f90f7cef591e2be88258b5a62fe2ca3d026f049aa5cf0afa4772cd7dd3cc7803f81526020017f8958e45cb6b054b7dfa9d4a4ee7b2748aa26de213f1507043f21a086bae913f081526020017f11c7b7993a4612ebf77877742ddde051ad367394bfff2fe4cc14a6ddc29881b181526020017f328ca458b055f179d5640a5d594550f5624f58087c7f388fc3f465db8f82490d81526020017fcdeac38b1f3501362d894db5c48b757a7c00c6f7e2d82cee2ed0b13cc0da4ed281526020017fa5e4a8d3a128d3a0ca2561adbf6a1c5946ed02eaea7f87fd9b989ab1be63197c81526020017f92f594b6f0d8f9d0b665e430252c8132f28de6003d3dbadb02e7427105643f6381526020017fdcd892515e9ca13fb022c5b9786efd8f660404273f7cd6880e611007d66125d581526020017fa9b054a1fb2a6c30d0d805e8270ffe4fdaa2a2a8092dd036c73609b01ea3dad881526020017f141a92c3bfe19293af0487bf705ab0999bcc4d23c0838d35f700a0ac7074fa5881526020017f4661878caa6683a2843d0a9ec553aaa7eba108693d1506b05a76a2c25c9a17a981526020017fa14c9c8ff481b61b8a36ffd8c12b32f1b06c2b48f0ff95645117abe91f10dd0f81526020017f58b968aaac0a86ed5e28a0bbdb0d58931d12c4864722875cb39648b12ebe70c681526020017f5d9a1ab8ad5b2f2868791f489057cc002725ac1b70517a567f5e24148c9c265881526020017f57322c951150da21a5338c1be0f6f6504906157ec5e28b06aa68185aaae74d2481526020017fc1e83888bcc03dff64089c2d1140fae30c3846909ac3e65c8f091d276ba0495781526020017fa796916ba29c32d8eb0615e2383e2f96a10817ff22bfa2583a0f40a0c1a3583381526020017fafd224b226d177e486922a949cd01cbd5ad7c52ac8b548f74a931babf7241af981526020017f0215781b6f2a11cce450d68d971f77f983d2848638a0d7a4dbaa3c023907168781526020017f8ae79744863fc03319e8ca4a9db3bf1ad007c2fcb7724e54bf0c009cf47e7f5e81526020017f87d1347b33d87776863b1e9738d68a9ebe89f8e5c055e84e5da01d183c0cd0c781526020017f470db727b4735c8128672fdf5f5cd0703c8aa700e552f99f1ffc2520157dcf6681526020017f43c60c167967bbc4e4651f4c8643f2347ce1544e21c7a29f6b970e0e6fae26fb81526020017f96e0ee7d32cfb27964495d2a6f2e20924e424c94aa952dca072f3e10553e26f781526020017fff9bbbad1bf7f84ccc18c954ae185b0e807195e13841d98aa65db70b28e2fda381526020017f53c2b899901d423b63231c77ade93c082f35056627ddbd562bc87c38d5335edd81526020017f5aeeb37303c0a22a16de8e81c65a85744f0d99ab401f630fc8faef643c04650881526020017f7331b5e622816cc8e8560dc53aad39181476f1a3e0227146998bf63ad4882cee81526020017fb6c8d73f865189d4c1e3ec08a82e6c2236c8dc9508df73f9d07a0c9c0ab1a19281526020017fbc57456309fe15220990768d44b70b1de695c38186d7c7019d09342155bc1dbd81526020017f76fb44cf214939edea00027097d030000700b7df6169a95ab5d5be1158cb686881526020017fa4ea58956359ed832a63a107d45947443d02d1cb650d883a9642c8114083477481526020017f825357201726d3d250802f64e6038c82649e584de032e1d15e2c50485fe8efd181526020017f3ecf8db364f8dc6d5044437b038f0a70b3bdf992cb9e8b92b0b1fb177d317ecb81526020017fdc31c0e36406c0170d8aa00d2834ddf65448a9795c40e69a617747ad2a35b31e81526020017fce66145d8cdc091745409b41fcbe151f0f9fa555c9009c068dc0be3b6e88705e81526020017e2e9e50ca5082785a722391417d930789cd88be9e1bdfe96066e877d0f2c40481526020017f7a00ae177ba4a64cc8555c1e903ea8eae575b3f250cd1855e3616e9f5e2e0b5181526020017f886f5a4bc8b62135753fc2961e085b2eee0a6c02f9dc0393b1a0ab3b167841ea81526020017feec6be570c6603221b356b325f0eb4748fff64ab20e78c1630ec5686e64d205e81526020017fa86b97013fb2fa9c1538c1fcee6d0d37e1c1072f49d44800d3a925dd1127e4ff81526020017f43301bbd24a5d8d2a164f0378f9e8ba599ed7c216b6e77ddee17d4f65e92756481526020017f585aef9cb4c3d4d96affe4dfb79261f6edd16588627110ad3318d9c542b2e5a581526020017f7b601996d5ea69b7c86bf1cec2ad432bbb4de4d83d0515263e837c9f32f6e28881526020017f907763608d00f490d8b86d6f6b23c18b6350114ba9a9498397cb3370863492db81526020017f25887707b541065020bec3326120a492217393c82f3f3e2743abf4fc393e044b81526020017f9770ec070bac9a571344524e2d2d28e5051b71721542b630092a870c71ddb42881526020017f886d86ead4d0fa677014778b178e47f1cb6abefb9a2c3a18c4c929f86471492681526020017fb43e9322c3d43a7ade6f1ab2a2c4c2aa265950d3362854a61bfde6e3eb64420e81526020017f15c6a7ad98e0efd2b34096fe7507efa30901c7d98061cf16d47dbfb8a275e15381526020017f362361397c18d0cb50357736eccf985672877019500b7a2c067451536dd5de7081526020017f8042b309510da3c7b2df4d6582451ed70a6c0e6ee1d4cb3d7508b0ba022c998f81526020017f186b7b7a9e73bf7acd49a76c6d7cdf0a63fb3c104c89ecf492f91d9b729face281526020017f0777c99f6e1222cbeac663f8c255e70c86e1fb5afe75c46c5eafee36f14b9cd281526020017f4e811712dcbdd9c28479512853da60a84a07d947c48823e34318838de747867a81526020017f4fefe07dfaf71184a8118b3603c55c79510fdc97c8da3b95d90610e9ea91dda381526020017f36f1ab34ecc8f27df3df8341faa1373f3420fd66ab5aec95dfa6ddfe4254cf6981526020017f64cb7106b7aaab9c721b9fe7e26f5e268e5c98eb39d87fe5da6eff9d38b9bd7d81526020017f37ecf0856c6f0c3dddb12874324be8acdc00b9f367d5b0732fb5b6f8bd77f3bd81526020017f84e3d8567460202d9b72ac7253c62f2873c880d3b353c78559cdebcaef4de5a481526020017fd3a853ff02d390a35b18c6794cd8d8e154755ddcf7db4dfa1069c3305a0a149a81526020017f79f39651e25b0a00576d589c2504de733fe7fce25d3761d22c59a5b948f5a84f81526020017f470010764c8697d6d3e09245d864cf864c56492336367dcb89ea7715849bd72481526020017f294dfe83ac364721aeda66b4ac6382fc688cb30e0535fbedfad3e8484fdbc21781526020017f2f611477f0a3b1adfca2855fb6b2533f46651e8c42c35f09f08162df327f5d8a81526020017fee750252f9f77209bc020e1b025bee018ab640700e4be4065147e481fab9042081526020017f5f5a6203eb57c4517f6fef7fa7ebb5f1ff6824250a0ccfecf2207c07eaeff00281526020017ffbfac2ea2255749c90facf5a4bb4d0c4f194acdb9a24d38dfb84fcd9f9f995cb81526020017f3470eaecceede93fec9a7925aeff6c7bfa7750143fb88a314984a7dc8ca5d0b781526020017fab1b1b80853e36344a3c2c9e90a816367ef96297ef0117874a85be3241833d2b81526020017f168eaf67d67741cbfd27b6119c7b1918c51250b7bb80f4f7132178e210e8db4281526020017f2ee15d10e05e814b0d1bfb1e6f855a20797b21f36b265ac3984c2bb0db53cf4781526020017fff9bb89e36232b0917c0948cbe2119ef1f83bf43c406bd4bd50c7364aa2ffc6981526020017f60e3a8372c103f6070dfe8b56edee9421d2678792bff5e2e98b6a5fc3c9c29e981526020017f63aa95a559042526a0a4de1c48b04c52691c2c993eec2da8d3ddeb6d6ba6ac2f81526020017f9960adc80296299a9845d8b0c6ea4147f9204ec1b0494ee3fc56cf9a2d1c8af781526020017fcf853f64c98d6cc8df3777bd1f6e1757bd2183c4f0b9cd972ca789b48e58bafb81526020017fc9a93548f7e4d2812f0ef02bb43adab46873af9e61c47dff1a9846a5ed8c73ee81526020017faa8836a2cbd19c9bf84fba0bc1b899a4c49ce020d84c742b409fa47362ed17fe81526020017f4bbf661d20ff3459f7d4ea87ed936287bcbc69cabaf1606afb02a61503311be981526020017ff079ed44f181df4a4e42803eafd303aa6c491c30b6357fc5aa692b4c6623fb5f81526020017f585ab73d452acb1ccffd080d9b11b29e2bc8aa153a9aa5da9b5271ad3478263981526020017f1500a528cb9793ed6afa1c3122272969a3d8f91a170b5b8e5e296e2c0c2e036b81526020017f8c2ce7025bd14759aef8849e596b5f703f0b4e761d20f63d5a0a00e14744d0bb81526020017ffddaca5119c388b8345c0f107ffa8abdb9eab28f74649c8a45e967138df23f0081526020017fa6d3a660e263430c207ae2a3cd761e8e26d82758eb1767fb8f3263fd3247457d81526020017f58f213356ad292e094907fc896072ec911032994f815b1f81bd49e537b65ec3d81526020017fc11d5a8ed6241dec861dc6ee230d61b3586210f1864c19966f177679a4d9960181526020017fed6fe6a6efaf6435700de61a8ffdd74a461d22ce898be7eaf3e4e34520ef9ba181526020017faf9d6a25e0f5c7d19c59220f38f5991b9cb1cf84bb32cbeebbba808f20cc9d9581526020017f9e3ae79f4016e92a4f3fffd8f60a4950b0eb7144da5d3a60a3c2cb704eb8808581526020017f03f3b824e6395fc18a43a864d919ce542de6f9e399eac20ed2bdfd6bbef71ca381526020017f1efb47f894d46c4cb3ff252c15b5870f27b3fab8fa8c4f63685fded90292eb4881526020017f839c20e7f5456081e57047c9d0511afab3ca9be636297e1d201e7c2f4901a40881526020017ffe67de0a5b9bb160252951c62ea94022d98e79ab424171f1d7caf0c523b3883181526020017f5204a4b36685e5c8c32b942c0c608e1fd6cb0a4f69b901226a791c2326e628a781526020017fd3de76a13e15306debd1859b666ee9ce40db99474da72997801ace766a8e91d781526020017fe7fcc6c56396a4f994060430cca101be622aff1216fc2697f1a78afebbaf7f9681526020017fa8e6e754819120dcd3fc572bdd4c99dc503945148b1be5547dac5a8fc09e5df481526020017faba34bb49d7b199e1a7cb27aaf853e22b76bc1f84e9c872cac09171d3f93212d81526020017f0799454cff074980028df79c0e0602d0e5b2c1f756d120cde11e9ce70244544b81526020017f627dce90aa307410d06f136e0bc24aad951d20df731131cf3db3b69b6c0a953681526020017f1983801ba37050f6597f8e6d211fc22420a564e497d6e28a3ffef74d3129feee81526020017f0324b227ea06eda68b262bcbece666e032fd18d46178a90c87b6316629fc6bf681526020017f9cd4f5444a7b9f8e0c41f86e3cd95e35c4727e0ac3412be024fc61a8c49ec81181526020017fcd002b7433404c3238f0ccb8e08c9cfbd64b1412553a9904904ad9212d042d2781526020017fa98f7096a271189ba30b6e6ba14c59100af772651251da9f92a807f35607500681526020017f71145a097b4dd01abd6a67c71876aa7d0f15e8f7ec4eb4d972ce6caf0f78552281526020017fdcf3955d44e35a1d7828bf2c69036ddff96ee14ba2123896446274ee303e7db581526020017f8cfa67b8f6a3881be62858703bd677f5c6dc4065910a301271246721d7efa1a481526020017f7c9357e34a5051d25557967408fc18f72c1c162cd3a04f0081c8d132f165826181526020017f8de98473c53b6a2d2387e8e0442de22cca664bb39731ffdbca66de26cf6e756c81526020017f5ad4de50be0280fba179c33bd3bcc78800be37bef0d1c3e807e2d1e1c8769ea681526020017fc8137a1dfefa5bc82ef003df31788decc71a4b7756bc4dbc0c3eae84ccec835881526020017f7c61481e97e73979c98afc1fce12be715db85011e7ff9797dde82ae46d7503ff81526020017f6f3e81e643ac1dcbe0c2d516c10f2f50c098c1635124a3f1408340e784d72ae181526020017ff9ac78230e8df93f3b0559df1dbbc92cdf8586032d9961c634cf14d01d8b747281526020017fb0ac91b9a32c7e83dfb67cd13e247881623457a4ea38ca6ddec4098d005c660681526020017f09bb765f14bb1f2031f21d49be17973242df35840f95e648c8963497f676047281526020017f3ca033acf8df846f851d67dffd9170511e424e9d15fe1f8c75ce3e991ffdb43681526020017f04b4ddf11bf43a9447cd54be3041e6949c27434e8702194cd5bf8e65c27d126781526020017fffd2e192c08769b88752873fda063b40b16e2b28dd16c55448c8550d6be2057d81526020017f85d19706a9090dcc1700641e0e6c944de2d8e1f19f1b640ee89e7d0a3c7480e781526020017fd28f3d4d19e2ad05ef2d263acf3108a80e5a0d8456bd47b3ad933cea8ca6c3d981526020017fb0ea8e62c85d3bd3af5e59e6576a07d41912ac74ef37edb752b878d7583d852381526020017f6d034705ffb7c3c53277851b01d9943a40ab79e48bb3fa7c5dda090298f3bf1981526020017f741fe78dafc83388b4b19a17b0847ddf5a041400bf15f21a9ab14ce370431e7681526020017f210ccae4003f10dec5b07c8bed18c872f6b5900daf5cb5760e8ca4c81a311a6381526020017f4f8e554625330f5511152ca3a5cb8756524be7fcb371f2dad6f23b348d6c957681526020017f8cb0489a5977375583ebda7c592f8797cea7b6dfe86c2593fa8ceda02552750f81526020017fd6e46251391db88408fd48833c2e58502aff26a54a49b1b6955817ee468fbff281526020017f583bb4527225cecaa1278c2949e8a98c75bc0a4831df398ab7d61e445d6659ce81526020017fe8f23558754620485545b015c3339de89721220b18d7b6f44740d491a87e658481526020017f65c4431f8df1d72a42672e76c59c6e821aaf0fa1c8c5f2c60a9c381307c730ff81526020017f1c6ebadb7d23ed6c558816df388817458758c2ab1bc67c7d76dda98288f4052f81526020017f2005ae5fbab174f76c5ac1cefaf5d1de1534ae3d99fa8afd8e86d91c7ad56b3081526020017fbc169394fdb522bec381cfbe263c346e6927f067f493d324146a1e3aa1637b5d81526020017f914bcdbc01fd3ae9eae6079d4cfa2c71510092fa30578024486e9337458a1bbb81526020017fd4b62c7dbc1bb79123b78be1a054346948ba1569fc78dbe324cdb395671927ea81526020017f313af6a640c47bb581fe464a6c5da393e9e4fd9cd0a96699024a61fb8507277e81526020017f7dcccac51b8580036790df6518847722219e1e598a1557b9727da81156845ff081526020017f22493d19d10ea6739bbedc0b3fbc32ebb6309e4a734094269e09fbb31cbdbea181526020017f0fa1d2b93b5663810a7a812888c35dd425564c789a2557b3495c2fb0150af2ba81526020017f6e066809750a055ba3cf36536b9cff8ade3ca0e50fdcf2597da6db17a9d8fe5781526020017f83a07f23f72a9b2af879ebcc0a1f891d2d3c27766727726965381ecd9cc7e78a81526020017f043243b0eb3e853f408543342a1cf6871806a67f072829705ba0eca7d61cab7a81526020017f538cc1cf33bda6889034c2e6fdc290793d1c08ab546ddc70674619ee4866df1581526020017f2917a17f944c5f2a307623363e2f50c181967140f5d46b4a5528586f55900c4e81526020017fde3b02b595a5eb0b52e8a33d0bd572480eaa30ac8ce316f31454806506f3051c81526020017fa646270c314453367fef3ca743f0bd957d40e5125e91610e23e71ee0bd7b189b81526020017f8872772923f7c70b53d24475ee4fe4d5ee20b441a90baeb73bb127a80e2621da81526020017f0e43cada96ea0ee3757a8048d2cd51283493680b23818fa69ef469fb849e178181526020017f38b2d53f99ebd1722d8f4d420fa67772ec5979dbd3ad9f5bf7652be832653e7481526020017fa99af6d4dd22ada5f06a2a82c4243ffb40546cf5e91699bd76a36d1d2924460a81526020017ffdff31ba18f5168e616cca7ecdab9d6ef1cc59f83eb4f2ad660deef15ffb776281526020017f97e247889c2b9141211bf4e8963d63a6359fb5b675ad10ced8aaf8a1671e6fcb81526020017f9783c77aaac52266faa4cac60aba40d97e4886ccd5c0186e6aeec28d53d509bd81526020017ffa6f9a5a10167556970f0953e3715c265ed94c9c6d0b8eb95d289a61f42a253581526020017fde925363cee815412ba1c0136f6160360ab97526c2ea86783927383fbe4bb2a781526020017feea6394379722e7a93e824e1eaa26e4df7f72a859351a822321b27fd5da7bfa981526020017fdf243b2f59176408027c6ae0def6ae62e0b03ca4d82da6fbe965902d4f2bdc5981526020017fca3cb60c3b6325e9419470b4a19428f0ecf220b3a845884ab8f4e654e164130681526020017fe5668117e58a2d3c03748f21e2617d7afa167284c5184e26ce5d25ff1791b56f81526020017ff5bb0c541ae2463eb557f2ac3e7ac8df287ba5bc57e32b5212bc921da23d06bb81526020017f65e407a458552fe5aa8fbcbb4e614791ce0b8173dd02c0009f47763f3559a5d981526020017f583d0f7d4b2261b5ccc667dff10f32a66f2be60c16c96ebec0a9bc6d3e1a866581526020017f25356a8a7d011a6d0ada23fce10b74b01ffdbe7179eab42ee828c1118f5d25e281526020017f642dd757ee660773abd419f67d00aab29171d474364f1716ea4dc91be14e162f81526020017fd6a591390c6b7d765c012f1c3ecb1f03843672dcf65774d79a1a007804f6f3b581526020017fdcbe42e3689cfbfaf7ea549994fb5b6050bca31caf61de120c088ca086c49a0181526020017f4f9c258b2d1f03e51178420aa397606059090a84e63afb58ea926c36e96fa68681526020017f25f9dd122af94bf1fc7c5e1a8d885a3f231a7eaad45da1c88c6604092b2132c981526020017f2785c5f46a0283d5f60b2f931e89c32f1f7732ca8f86e78d7d2d3552b03c895781526020017f0b3ae19aa5ec870df4ac7f2b134a292d7b32f903520e36c899057dc70a7f32ec81526020017ffe2dce02b897c5470e2e8bd22636f01aad994c0acc97093f3cd541285400c6af81526020017f679cc222a9dea1a3b26915e8c4c28b65b7ba85288c09f348ce240b525451f88781526020017f3021c1a64e54419ccb14930bc85b7cafb8664124ae4ba5bf1c036457183ae1cb81526020017f97f42b5bc3702fb2d4a6cd8840fc98e0553608448a05af110727c9dfe2b8ed4281526020017fec26113d571246bf51cbb4dda93f1146eeaad8993e8d9458272d22daab1551a481526020017f71db8da172185387ae395384eadd0d1fc9b8973e7a6d9acb970f6294812d403981526020017f84a0ac1277f47728897c0581be5e5e25fdff70f6712fd0fec331a0737ef514a281526020017f948370336ef97449ef210c96eff9701f9a9eb92c3b0b48b41b40aeeb3992ba2381526020017f2f2e42f570ae207b63ea5076632d39798e5c677b2dbca5ab85603744fb792f7681526020017fc3f4932f0d588655af54e2f00a426142eaacf2bde606d06a9a586525edea2af181526020017f1dc4903f5901ff89fe1b29a9f53e6cd11a8c2cf61d0c122501022224fe16c7b281526020017f8fbe819a70d78f305b71c4fe26604c6b6d8578afc25bff56958f73c59c655a4281526020017f4bdba6fe4b51743bdd0b4f0976df5eda3887e54b4e3ea155cf4ff864349d51ed81526020017fbe7b218afbda4ac584375639f1410fd663a7e77e30c9924d76d54c4e3e388bd381526020017f02fca3a3d0b200c5c32ab4f052dfdcaedc1f92c6a5a6fab57f5d41f8a3070b3281526020017f2da1b9ab321e7dfd7b5f6aa88df94b1abe404098b566946fda64607d765ae87781526020017f141a9204a3f929a0d2a4c0f350b74d460e924c8af21b899c9ea4352e4ffb876481526020017f26b60dde57e4c4e140679b76fe56ea15f423d5eb3a83058862a0d0f04c6b602081526020017f2386177793558cefb99512222cb23d95cfd774e764969180af76e577cbd791d881526020017f76263122599ee30894d9bee0a3e8aaf7ce5656d63d2a3e2e58dd8c92b7be794481526020017fca81c51409c0480b233ff71383effe4544c285299ae67dce01c13c3ada2c11dc81526020017f0517b33d8e925eb36ff4b8005d09d1b03251daabc612bcd740fdb706e416468e81526020017f86040f1770059e7d4a79ebfbd5df12314d42d7169ae12a291f4227cc80b40f9881526020017f2c0dfbd0ee1e33953a9ff0982a107e46b9510a983e6715173010b6681ebbc5d481526020017f74406e2ac5175fa1b9c7608cbf46044f539cfbb07b8a5fe46245c5733d7cd37b81526020017f8276858597af540ea3b559dc8d3b040027097418cc1636674c34526e1f9a3d6f81526020017f20737617f5e64b453aa90648606bd27c7223dec92ed55a5b46837c32f1ccc31c81526020017fb836107a6dd14fe143b9875cc0f2de5b7501cae3ae1cfa6d821e9884b042bbe081526020017fbe61a21f8ee88b762ff762f1d6a49170e5868b3592c85be22a1c74c8c12d208a81526020017fd0a32f529ce21e00464a16115157ef7732829c076ad2a76afd993e36e86ef9e181526020017f3c07c5d2a6b5e3b6fc92a394378103131886310ea0963edd16e0510085ddcdf981526020017f810f6baf4ce3f7320d86bc22191fbecba34fb771750c75111da9ed21789d4c0d81526020017f1d50d372b8ca722affd7577ebe58e524b5f88bab05cf3b78e3c28f8e4a9222c681526020017f37f7c551d589ca473a44ecc80d2c49ff79c52a789e74d6ae002570bce274101e81526020017ff08f5045e57388b396a4a98884e8c635c8c7e866ed7fae7524a5cfe23b0479ea81526020017fca197b5a3b4c62cfd61c9b9fd84440608221bce0857cbf237453c6ad133e537d81526020017f6000a57f00fa009b0586a4c7beb9f66f0d6ab143f354dc879838a142cbc0787981526020017f790e2112a467485f87ce86610c2c107648ec2ca6ccd21acbdc8034c5fb133a0a81526020017fe836285895fdcebb42d5944ce6616f9eac54f1dc57aa9da9c8b95c46a194115881526020017f87e01d88313b388fff7a189d23576a45ae490e9aeca5c347398776de2862625c81526020017f9f58967e22a74b59269a79f372b22e9598267909f2ff761d8d95c95c8aa7efd981526020017f365c0dbd9907b1a1758db4a32b517f5c2fd4120952389fc58cc57e172db4080581526020017f04e47890dae571cfbb442867abd3f9e637dc9381bc6cbe713d997d41d95f61fd81526020017f09913f5ce8e965e0cf1c06ab914f3a37e4d2320c7bbb9e504950db1732a9984281526020017f8758b164234f5f60e5ba5ccdc07dffbf9d66b2228b8f76040bb15932be61d6dd81526020017fd05fc8746a2cdb0d0a4365df3a7f989325945396f8c0847a1cded2010e4491a581526020017ffa39b27f73b4a01ad6d1ad285db3fa808ae0c84d88ec3deb94c17aedec1a485c81526020017f303d65774dfb0af74e09d57aed661f2ebc75b22803d8920ace520cf4b18eaf9a81526020017ffe5d0074780b409904ca22b04e08659675c9635fd6a020e2bd1c85842662ca7181526020017fe33723ad8ea961560ba7755c5fccd72035f30b367859823faa765a2bd4ac0c6b81526020017fa712b29e058dd527ad05eaca21344d38bf4d1c49a2d6da907a676a2c2938acb281526020017fc351ca1abccd1dd35825046bf8d4df6362e99edec7cf393fd302c6cf6cae1d9281526020017ffc4b090f9fa6c076400847a9462f5931efc3e026a0547139d8d6e6e523c7f90d81526020017f3801c2037166fdcdeb26f83b037743aa29d13574c50916760722e189cd0cf71781526020017f9098b67c21bcb58702c5616ba02850821e8c3c1eeec5aa7e3edb6e7b471baa7581526020017f7a41a336bfd056e80ea7c61f5d4f578834dd44995aab75c8f6572c77c514fcae81526020017ff4c48a50e54ef8c378886691afeec32a22f08cb325e521169538049df2af2ad581526020017fc7f013aba6dd22b0c91c288d417759dcd11c38e28dffde5c16c957d5960e3a0881526020017f9a00240ecdaae1021a547e4336f5ccba6c49eff66fc2d231bbeee9c3182a5c3681526020017f4f27f3e889aba67c681e712a6874e1bef6b75a4ddd9ef741fbee4346ed2a5a7d81526020017f7c00f9cbe6dbb357e711c742b34b36e3e39f49c93776de1a93d1e4f1fed9c6f881526020017f48f411a6721c89dbbf2b818845c20e17c1a780d257e5763242a30050d0c5632281526020017f59ae97f13dd9687af8c8f8a12c089fdafe7e68a43e98d68c3bdcaea81033545181526020017ffa5c8bc2f8c630b6c7f6f815db2b8accae092ff0be13a31fb2ba4886873ed02781526020017fcfc9f11ef4e24a8e3777b5371de23ee7ba5fe4cf906010d05e3abb8aeff3543b81526020017ff2c35f10b7e9930d9cc1c6261488246322f6b36a0251d93187017d7125b5b9dc81526020017f08e68511aa365bef9d3337b4ad47385f63c54edec60bd41d4995525bf2c11b8e81526020017fad8f8b0184465bc92cac1e81bd6ea847af1509ed6367ed0a6d6fcf13901a4aa181526020017fb41ae3d73c1d7c0662c2b0d886d12b0d43610dd88f05701b4cb5a002a42389c281526020017f3068a51c2b0cf35273a1971f70ab1cb37d5248bcd80e15708c0f087d64f7176381526020017f6a405d89878587aca433b1fdccf1f155aef586536255f4d734d84bda02ebf03781526020017f1812f20d7dac59dff6c010dc2a16041387ffa09e0baf2f10e035014cf4dfd49481526020017f947704cae78e0b88aa4ba3cf01e26194ee1a23c0c9c7d39ccb15417e4d04d7e881526020017fb2b6e0033a015f3fb94aba3e3de0880683cde29350035e468c38906bb712266781526020017f550ba7d4f18a46ec35a459f62c9a06aa2bf331109cc76b24ebbad7f243a185b181526020017fec3aef2b3bf72ad3cd6fd32f472af51d555267a795adfc84322c21b934c0a0a281526020017f1b0b01a79eda6011629247d76a9019dae5c67e3a0a58be30ada687a309e466e081526020017f29a2ecc606b8f9af3b39d3308238c3632e208ffd25bd0426a1b5047a25603f1c81526020017f47b4d3571de53857641e407525140eccf97dcaab0234274d5981f8407306aa1e81526020017fd4a073fb8efeb65faef24a5ebcb199cbe16af4e2f9871243227ebff92ba03e2d81526020017fea11e21a24d6c01cb354efef57a876efd61f987d7f6b5e8fe49e3469b3dded6b81526020017ff79de415e84261e779d9e0d155e0fb20ea1c1cdb586e9a146fb7a3e1dbf719b381526020017fc88ed114cbdc5cf7abc6e032ac5afb5578405d4546d41cecaa46a43ad5ccb68881526020017fe5557b20edab7c86f150d5da246f86b3567584d73d6d3baccd226854415ab83081526020017fd8d5073e4ec316a5c4f4c8e9adcc13c0ae7fbae1381f68d8218ae8079e826d5381526020017f2b923574c764fae1dca936b354bac4e1f6334348bb75f0e073666bc178dfb03281526020017f829995e4c010dce1c341697053980a4ae8ff85ec0217639c5c516499fa2ddcd081526020017f0b512bcdef9bbde269578ca5fb5f00c47aeb26f97bf05c264197df7d2ff4bea381526020017f6e89ef2ab42e16416ae713abee0a1e8f11059352b617c3bab5ff5538d7c9a0ea81526020017fac8e09aadc40d594bd3f397da2fffb7fb6a8665257cc0acbd841e5e6c0d2c6e381526020017f57abdb4edffbe3df37919e4b170b247781fbf1fd46bedb1a5dc1d8a439beec5c81526020017f75f44b45c4ca527fa2771716eb4ca96a975419dddd8362c513054d29e2093b7781526020017f015d9aabd8d17ea6260d7735c3d5b991027fdcf41cc648c1294c3cd162953d9581526020017f42c1789b7b7a9102a77e7535108a8a7907bdd6a72bf1452df8a517cd05f6a0e981526020017faa7c75aa92c33117864454949108d6729190feacdf2783533d4926c0f422a9f881526020017ff70039b9e9cfc216d7ef4b601b73bf96c6476e5d9b89260fb6155c53fd3f527a81526020017ff409827eed42baa93c54943f31104ea1c51b8aee59e9662ece3ec8a18a6f2dc781526020017f1e35b46fd99ffd7a1e124c602c4ea6926828782c7285aedc1bc614d98581282181526020017f56514f6dfebada637dedaa846645d33402bb7738d69fe761ab748949bea7823081526020017fa5002bf6d9e7109c4214e1a3628aeddd0f86aac66ec78344ff0214e72fa80c9081526020017f4c14510e62dd96864d6ae924825ded6a5ce64410722ea8ea8684ad9d14f3e0b481526020017fd4cd52c6389b7db327822cb5277b351825901998fa85b47b790dd6a4ee8b23ff81526020017f71d86fb0c6bc74891982a5944f92a5c1654611267261d94243665e993e847b4981526020017ff3fe3b6359ba586d755c6e3a1cf999d6dbe568476e9d819a9b3a8dc7a5e4f63a81526020017f90d36b97988b03b4dc33c43d08ce98a890f175a516b9e2ed61e9c7b83a30364e81526020017fadbaad9420739da8a0aabfb48a253c672da3b2dd728e1ab4a8cce89bf06488b881526020017f99a8a42cd1d4a3d8b886f8f16b3d9c772306ee803cfcb9051687d960b03f1f4e81526020017f3c0e6c09b4aa08c6e4e8b95f429e349fd947c573f5a2bc7b5f443266b67c097c81526020017f56dca91daec3a488367e36bd00e31c482bc39f4a6a0e701239cede2d54bf06ee81526020017f7357c545a39076060855700a4854db3df04a4d75ac88eefc1d06e82285f2ef2e81526020017f6e625c86b9ba6830ff7117efe7c2c9f658b61ad674eaf311916244a9fc539cfe81526020017f6e59253bfbbfc4d7ba6834608d6b9936ce5f46ecda463253279b9212d6d053ab81526020017f6ab7dbfdd47a41407d4718e471379ba288c6ffe5c37a779b109b05986d1dd4fc81526020017ffcad78e10a4cff06f71b2fa699c49f96cfa268a4719f5cf5e13e98fcb3c9742081526020017f3e9453e2592508dde64e300f0935b328e8fd7c45c77cb504c332d871dae7ae9e81526020017fd65725ad6427fac422e597075fcf1f4e345ea220c6df5ab5182237f0b00225ee81526020017ff33c589a63905ce9bac68a87b714769fca22476cdde06328159cd562bff1756981526020017ffdd0dad0ab75f77d7f48c44ff5fcd7b1fda1c6b59aa426ad975400f00588dc6581526020017fca85855616b2fe3084b338ff41051541c4aa7bb623cb5a5ae38d79c1307bfa9e81526020017f34eae95633f75f7d9ea8b78ca197abf38c4e69e95464aad1c6e102d36c1f4a1381526020017fb971c43c261618c35e01e2bc6cf638ca6be8f5c66aa5d5d643de8fe85bfbe2bc81526020017f727a39e4ba6db3a9160651292c1b7855e9f199439e38b502d3d4bef0f8207a5681526020017f759f0171bc009cdcdb077330d00665d61a05ee611f6077d83890a3f27b48ada581526020017f0e28de0d9f6a75a8c66a3f71153382a2dd63dc114c0476c92936674ef33897de81526020017f326f31f60dab91f8dabf157069e2668d593401cc0644d631498f966cf9b6892981526020017fefb3b827cf15b1f33a1f260454873645998b6fa8a22bf5156fda2d4902f993f181526020017f9b36cf22f9f126053548b2b5918ee56797e6ce780f732af2bf0ab3a11bcf452181526020017f65648e6c60d1a45ce9c35b0491e383bf8b82aed626e60b6078e3e2c9def8b7f281526020017fcc6ef6582b248bcc48768adaad3b2b4d25ccdbaf514bc58843d16fd26f0d665381526020017f386e742c2935a633358d0c92634d74616fbed69fbba309fdf6a1e6df415f72fe81526020017f9a68e684f5a94dfbc5d2be116b5d015b7c8e59e60500de37d643195239200ef481526020017e9fa71f81d03f7fdf49fa2d7f6b3eef698869b3d818a4b5cf97f2865c5a2c4b81526020017f14dc1491a3b4f1138c25bef0e66e3e801d77bd6be0ca04f33fbcd0edbe2752ad81526020017f97284364d33456e3644473b4d81431ab4a459ef51cda1dc02711beda68fe8cf581526020017fec528931c8f61f9e6b43ce8d38d4342b99dcab639b624c3d416d16685c68526381526020017fda644e78084a75fd062802909dc5112b1f6f2599e4dede92760031f3b4c591c581526020017f1a03e3a7dc8de28e3dd72ae6a0728ece4c6b06793dd0486c003fe12796b874bd81526020017f0189f4b9195c1aa955630e7beb85ce978810abb8aebbc04b2068b011d47dfeb681526020017f9280ec1e46138f63621e922b1feadd85095d71c96d3983bf4d649deeb92ba59c81526020017fbe68b3c32220d5eaac7aeeee470936a8d8b096577099cdd3e6d18d2ac0a8715181526020017f55d948f68b852733ddc49ecc05b5aea5e639c3dfff734b0ff7ce07f16045d0ed81526020017f77ca2cb78331f4e64fe751a4dec902d838aef87a3e335c4ea41386bfb368907b81526020017fccb0225cbbea9b5925bc4f0aeebd745c3b0aeef969b63c91a793858e8074d47d81526020017f804363713e741c1f7f45c773147ef178ff3208436e8e0dc743718288b43b9ed981526020017f0af218274455e015032f234d5aac28b8bc73b6cbdea1c61c5ab3fd0cefe4852581526020017f39d182e5391c881b497ca8087c681e01c2f8b3535782c24ae7fe1ca173fb599281526020017f5ddbfe891059e0ce32e482344e0935c6133f7ad00bd895e95fe33b4dad25892081526020017fd620df44d48f777f46de12335397fc845333a0126a208161f0e64f6c0122779681526020017f226f69f12ad203641878e459525ed9626e644bfc15919094869a3d801c9c0ecc81526020017ff5f58e6e9bed3ab40dee87d5019ad2d2b8f47efd337b35a875045245bbad5d6781526020017f9f26bcc76ed674407221f7a299a293e41d9b3d0bae62dfe03b0271f66117826981526020017fd61d588fe8a9bf21d433e2db8affe0cdcf4492a574e9d9559f00bfce543dfee481526020017f0e449d7c29926f7f42b3c019eeee7f726113338b313734243a9862c7b457813581526020017f5af39e4bed756fb34e7a1fa3108dd956e609412560c479991eb5326dae38c40881526020017fcaf425790b4f11a934699f0bd5b4703c69629702ad3fcbaf444e808fe8e4374481526020017fc8704a3ee308abaf9b6727d5b69eb45c65858c083011dd5e217bc515d862853c81526020017f683d767d48210e82249956645d9e3923d2f2e8ceea449bdcaa7a987c3bb6a25d81526020017f19204fed98a5522a9899f49fc88424c0fe785ff62776e5351282e45c69e0368481526020017f309999019b34aafe6b6521e7704448d696948d42476ef9a298b62d50cf2fbbf881526020017f98a6049449a14f63a19e4ccbeef4f351c7fea75450e3e5b6e4ca62e9c5dff99981526020017f7b6608f1c8b6d0969a2cbf8151839471993ffcd0d24cca8a156542aa2db159b881526020017f1046ab48102dab40ad10bdfe2114097a2551d9fe15885c6b5b35490fd3e478c381526020017fdd01b92b1285f8b4c6c0e623900a7b80de772d07b4643957179e814be84de89681526020017f709846627e93f497d5c6f702a8651551936325addfee7bcf0747a88cb528a8c181526020017f61267efb05547bd2388f3837ea62f40ed5d9d72f01bdb7a0fda73bd3c3119a9a81526020017f8bdc8bcdc16a36424ef23de6d930d80dd6d88c6cb0e6a0d8cc60b105c73d180681526020017fda833d8d79abb35fce5345cb02d74dfd87a99a75328fcdf007106f67a1b5301c81526020017fbb4185661ec5f4c2a63ab25bab90fe0a6bb36c4ecb6533e42e524f754f9696c081526020017faef44038e7eb0b170c8a82ad11d1cc686729c9aaec6ce4dd4a1127612b1c3a8d81526020017f909fc8262f75b0472f3fb397497c84f6b8f97d132fe2ee82b685fd2a137455c881526020017f7860feaef381554bfc982b32cd687fbd7418c403d48e2d77a7e47c327a605fe081526020017fdc713bd43bc5f00a425ff71d64a1a8368fe22c3df835aca243cc6be52b7bc0e881526020017f9277345a9120bec4d08e0c44e01d1ed9e5bf5f09deb299cdb3f280ea64ff3de881526020017f130fa4e2ca893d89b99873c81c3bcccb4f13c9b479f074ec787210cb234840a481526020017f4267968bcbaba58e06a823ecec0a489e36dc28336f25896e63c695b39a14662981526020017f4b3a8d7788d34efdaf334dc26484746ff533b59d3e25354f9e8bd7ee35f9204781526020017f93b5d4a57dec443c6085f8de0c221f845251d08e2fb1a82759ce2358f3ce1edd81526020017f14c48b62b094c72fa0d7bdfcfc5364110e1175ca66e41456485f3c26927423f581526020017f72d0baaff9861ad77fa8739eee6edc90570791f709b17f088462281eee1bc22a81526020017fa03e36d7700917fab8438e447818a185265cfff930e6dddb95d71ca740c2798081526020017f6de47ac8608a2b1d60015015058085ed3bc42e5746b1c8055800ccad0711791a81526020017f93d46e57a3137471df420add98700f1457b01b25312dac1658fe5d09593e820a81526020017f6fffcbca1475d4fb05feb8fcf6df7a09f44ec20e8552efb5b24253178bff335381526020017f32947a96473e7133817da7a0dda02e682b815303a0ba4ee41eb15bd2d8f1f3c581526020017f89b0c80fec6ad197aad0ea71ce6bddbcc0e706b30e9b80245eb29023ff31ae2c81526020017fae608ebc9d74eb26a0cd0b4b8284330eff6c0af757498ef2c828987e35cd055181526020017fa58ac0ec912b2d1dfd165127f44152f5d91d3f52b5e53461ef85df4fae7018a181526020017feeb375b978ff4d84320d308897bd09227de2922f3643b635dcc0810695fb24dd81526020017fd553ba60f620ab0c9f15ed48269c8fcf5664ce769cd153a12f538bf14adfae2681526020017f4b70bf3c8da748fc6092369349177ac6f4ab4a009c7b3bb0371a55a625aa3c3581526020017f43c4ae9612777f59ccd1721af294522ea0bbd57a6a574b3582508cf24742e23381526020017f8c0ed435d8e7bcb579e9c9ef8f88e23c4e3169a448efccaaa1ac6766d1b1e40781526020017fc9b234a62988d4d926cca1649b7914581c6397fb2f48e047af06adbb6d838eee81526020017fd1f1b0887f98dc32fc69e0a830ccef354679ff72c0fcbe32efa1ffde52178e4a81526020017f7c26ec90dd3ca9e549577e2ba68afa0e9f963dffb532ba79b89a51ab71c8d20081526020017f48c0502daa9c28d82e1f8b2c99a7d505e3f1fea6cea035c9c00b5b00fa54405681526020017f23a05e31959b69b4c0e3d37158d4c9c02b862e3028fe9acbb431ecb1d3f0d76681526020017fe71397ab819b57ee5baebce73d6a23d11344410cc44a79db0c5983859834de6181526020017fd43d95779a716749744ba45575fdfaa828ceb2cc18508d82fd9412b700215dc381526020017f8558ee5bd2f87db670435a41e25948a4210ef65bd61ee8bf8083e141e724116081526020017f2c59c2cc3546cc08679502c01161f50e8572d1143fea5b9cbb15246d61ed576f81526020017f3f4b033dbc257c20b24cf893b5ad41e473e6e519a02f9a6957e7107322c32e5981526020017f8b02e7ff4b049348c24333338156d249b23e5d23bcd5ed3ddcc21200baf77e8c81526020017f7f58f06a536de06f85be2f5d6ea788dbd2cb567a2a492c7d0eb6782dfa6dded081526020017fc6183b0172834b9ea954737fe5752fad7574e52b5dfb384c24b9ed6e138f4f8381526020017f2a5de140a6b06145ad407a58041ff5f2b1db799a1b201232110a85f2e09bbb8c81526020017fe8cbd3e938504af0cb267203ee52ef6cfcc02c2ecc708642ce941edd82180b6281526020017fa3040b5c143e92d91250b51c09c070b5f1079c27af66a068599ca4c8bf12764d81526020017f83f09d23188af92b1ff2538b9ee495c4eb447d64516f912ff5b16a996014c15481526020017ffb24ac349ab6ecb70d4e8f5739ee50a76972a42967a17d2ee711676da67bcb3681526020017fac1557817dc9faea7a420bb0df338aa5f696b5e216067036e3cad20af839cb3c81526020017fd451cd4a79f6a7562c98487589952eefbe33973a4ef320cb3d76b870fa3aa20281526020017f16fe3ea3fba15c0ac8448fb61e3b8fba11f5d020489675b9f9c7bb9f62f76b4481526020017f53fd7db8cf32b163917071183dade9868e6e3e18106b0577d19776cb877fabbf81526020017f977a44b018fcde3a10db718b832d4233d287546513c9d9d0b69432d3f4f540ca81526020017f5039a3fe4c1660e5c19f51f920c043d6bfedfc2669b12b811ec628a90894cd5281526020017f204b7d47077d03e0e75092341b8f187cf195e32783b1c246b456241a9a40789981526020017f05198fe10016b7db0c7a0fbb0b6f09032f9d1bbdb548b7e91d7c8069ae14c0c481526020017f15e3c809bfbc8666d8265a2fea9607ba160f0b2c70b57d6df361f4981220bf1681526020017f277f77e62fee23ab32bf066f96a4f248c438ab7f9bbd651c71d7ba1442946c6881526020017fde7050f1bd892c73ff65a163d183dc7556f009ce7c3d62ce6b794e8ac667e06181526020017f809d30b1efbcd8f2ca39c4385927a5a7414a246ae6aa3436246537b99d8688e481526020017f97521e5cdd428cadd9803dcd1b82527e6793ddc210a0050e4a6a55a0be4b9c0081526020017f50327ed8f7a8ef321de5ab693e2f6c29a12debe57d1e00b22881ddf2e1004b5581526020017f66acbef282cac22248caab0e6fb68cf3675f8a578067aee67a2c7c79b342d7a881526020017f1f5fd62b8fe3631ce8053e57e1acdc9d5797b4630c1f3ff252aa3d27ed00320981526020017f87164f15ffb6a049c1d1afb25ba23bb06e426bdc34570f58557dc64b62292b4881526020017f02e18a6add9f5e9b31c940656ddf0aac2f5c91b8ca45940daf0e2bb26b420c2781526020017f9f51fb13f78d9211a6bd17545be1e3b862c9c553789c716129d4922a9439641a81526020017f84f8a53cfdb9295ce354ee54548a187d87c2fba4ae78997b2cc01c68521c415e81526020017fb7be4a4b39447e83e213f4410eec54cbab7879d425f1129874b168ad33e8b9c081526020017f4748c03d3a66c77ad2a845950190822ffe9f3bc5077a39f2d386928dade2ba0981526020017e74e4cf4e394feef0141aaba17c10e943533f486fc82c94e161c2c7366ae26681526020017f69d5d7ffd7e772ebecbdaaa6e207b3f6e562d67cd19cbcdd0571f85454a315f681526020017f5709146adf5347dd882406ba8ead0d5aadae1ef699e65057ebe6a1eeb145e55781526020017fcb11ba2300724577e5ec9342a44ed2f10d0ea613bbf9dc10b14fcdbfb35259c181526020017f5dcae01e96c7af39cc3a80e34e39cab222e19a65eefe2bb0c2de87b221c4959281526020017fc6835fc34b2cc85df4b7d8db31c4eebc71a309e12c7d22620ea9e9a92689b54b81526020017f8052eb32702f88d0f33d9628e1dba9caa48a104698e90e3de86b41639d82ad3481526020017fe6ef253444736af98ab8edb1f96ecff54ec89eff273149098b5e09342da08b7a81526020017f3d1f0aa4175bb0d10b4db96fa2f3afbaf877a197d39aa231fce872bcaed1565a81526020017f9c8f17b46f18f5d7f89ffe471e7b8df2186d526114e74d9e29b82fa9101ab36781526020017f2c61e7a81b09f48cc94b1160dbb3ffc83bb739f0ef993081ee0197949280807981526020017ff0ec7bda83b1f04f9944de6260f61d3bc08c27681d05d4fea5bbbe6f4d0616ce81526020017ff2b6bb5416342cf22e13eb34ddf8d72c4eae7de6fd5ccaf18c0ccd55673702c181526020017fb06d993008d1bf0999e2e216a5a2d40de69e541a2ad0146567edaeef676c88ce81526020017fabafa17eab2eec001a165c567da9affaa71b2225dc691814fd1accb17870234881526020017fe203a4f1a56e34dde7eeb9fc5edcad1085b384d148ee0f68563f7416bd38e83081526020017fd1f48b894b1aa4a6836d6531bd948f1a513a147fca25b2aa5b49bdcdb15082f781526020017f55aa2e6cf53c5bd8777dadf89c40eb78137fa3fda4d6e26aabccb934942c82f681526020017f4c05e520e57e654c495a73b6678686d215d8f16e7ef9813bfa8bf54f1130387981526020017f8c147558c1edb8e3747176b42b698ec4526ffb864fae600b9a1ab817fb895bf781526020017fd48e2f394a88fad323392718540a8c70d0b1bae26ed17a79cc6c10fed68d76d981526020017f85d6920e5e8ac1365b5e2db3d2a15d03f2ab59f79bb6ebfb8ceeb36f91c22c0e81526020017ff7d7d78adcb8310de563fde2ec7a7dec7e1635ac1688b3c2a748f075109ecb4281526020017f4b690ef2f67b446d35e8045f746886325e1b56d9c1c7cffad561bc0d18f891d081526020017fe4bc9aac5dfe91a3e23a800a2efea346931751af5a5aa2a1f8b4286f1d880e9f81526020017febd84efd75975f3fcdc0734fba40ba00779fd5c372371b934a3dd8cae0f016b781526020017fa58b9e8601e2187d72e202e02ea2bc54565aa8510560ab412cc0a37b2f28012f81526020017f342e00fbc3682c2e0d48bc4c126fa86982657636ddeccc94238250c35f8cf15881526020017fe0de6843a944e9e835250714a3a27aae433f1e30f3c2a51579cc6a4aeec9dc3d81526020017fdb6875530d3f7d38493cda4b7c7b5cd9f73b8bfb0d6b43bc408d983a4c2a0b6681526020017fbdbb39c881dbe9eec90635d6626dc2592e8edd7bd9aba9870ab60cd1b106195781526020017f4d47c5ef8c4d3337d69f9688b32c452ad32b22029969576cb2bd57479d33082f81526020017f16987857d138c1099b5ad529eff1263ab0933696098044af1403469b74a9793a81526020017fbf8ede55247c795445d297f2d20f3ba2c24b016a680c42c21eedc0611a3900b881526020017f171fe0c00c70f4013c3d0a907f150ee87b0ab7b97a83d371cf554bf9a992e7b181526020017fedeed0dbec35d1a0fbb202e5a18665ee761378a40cf204376579c79dbb272cd881526020017f58081a2d78a00554ffd053111e5d540a066831e7e3709745857c4b0f05aede3581526020017f9c516d873925ca78526a6491340bbb2276b23af7cdbdbc98a4fbabe53de9ac2d81526020017ffa3d598cf80e4442150e6f212b8ac841bfefaeb6f4a4f6173f576114e745510f81526020017f5af43f7a0fb1cb439a7c63f92f398d685b646aba59f3c613bf522a690629ccec81526020017f75efedba484dc59626fe7a684ba143b072248e7644f5369e218539fe46368f4381526020017f3f0cad1abca7ebe585118ebb46e5c00709fc53e83cd09930f599a1f324a6d7c481526020017f71aadef439a84ead4fdfd62b3b83bd90437456e92aad26e4ea9e4c12f3c3f31081526020017fa9ec39500a9a17b183f37e8d45ecaa29fe3d7de40b1136345ac513ba1768515181526020017f18ec6db4f7b0defd14924b5e0172dd9ff455028bc1cbf545afc811a5a4dd9ea081526020017f45470121208cea39a56c065b55ff7655c6ccd73efae611ad2007ba233608b4c581526020017f0e8eb22801d646947e1815c271d5ac907e39d456ed9bbd5973245330c745ab4581526020017fdaea35cbed9ebfa90e6cccb3f0e5f121b43da94aabc544b63da59bd32e5c36f281526020017f4b5ee46053000cb7213a9b86eb64c4a6befd59e8920e4e50f9e3a833d3e6dc6981526020017f2fb44c88ec4754e667a3d1fe0c095922573bd90bd550e69cbc2dbeb6494b5c1781526020017f450a7b97972068077f2f34a2b59cb0b2e8f6456389288aba3784bf8d47b3788e81526020017f5f0bd4bf7fa6c0ef5fce43bc48f0eb183444da109a653c5a9e1f703aa61210f181526020017f6beba149eeebe9e46f9a58e4c40909dea883864cb35bc668eb1e82901934f92c81526020017f90cd1d4234fb5fcf8369f1149e8aeba220056467f295306d73ed7e90e4cc69d981526020017ffa3a5ea171cd4006703aef6bfbf1e8f59ac781179766bf4572c1ad4aeea8871481526020017f0d297054d756007b8f339de0121be4d3a514316308ec9fee5e0311ad0d34f5b681526020017f243b121f1c56e4a809a352140873ba9d02e643bafeabceb4a0f97bd3f687c63881526020017fd1219d86cb52041e5816d280d73006fac66b204181b6416c731bf22ab5d32da981526020017f1a243c45faae6ec84041ffd196a2b079138da602430e13dc3660985daf9dc82781526020017f6ca6ca5a7f2f92a45d9ddeff577f276234649fb5e0eeab5b4b6ca6ffc2c5002881526020017f8cedd0c778080c308e3505a76b0cd42a629a5fa65e4e23515b231866b3acd72781526020017f0ce58864c446c27527f4bc791082e1e48dab66f2658b791e6af19517611eb5d681526020017fffde22e34ad5d6a968baffbb324cf133807789ea829cddec1685744c452e7a6e81526020017fcf1b7e8edff940245ade0962e1de1a4b84cfe065b55cdfffa8dd71e5f7bfaea881526020017f90cc5456b57afaa2aff02a2b629346ffcfb2ad494bbd2513fff2eab50d2e04b381526020017f82dce6606cab60f27d9f47a8bd05fb547415d9adcdf8f09125026c89915d71f681526020017f9f728ed50599be7c3cc18d735856d177e2f05697472c3b45c29373a9bc76013481526020017fa3c1d325f450d824a3381fdbd6d78f91798e9b805df2975d8a03be302704305e81526020017f0419b0c0e79f938b2139988e3db630637efbf2f948162204a6ea6fa9ef9dfe8481526020017f052179692aa5dac55140604b2cff131e7b49508bb4c4855c909adb46a02faa4c81526020017f3d63e6de2ebb9d2fc5c2bb6f802bc4df22bcba7d9380dcd5708650facf82356a81526020017f79994f795f422e27c66d39e9c4f4323ff00b5961784c06ced8953fc4550b3cdb81526020017f471eaab72abf2497eaf977a8b99f6824678efcc536ade1f8533927869e12202b81526020017f81ffa8383ad84944edf0daccec24c7f4839df8746780e39730e578f60e64d98c81526020017f9ea7113899da4b90ebf40c338169b26887b84c416c0c41108d62d18f7518ddf681526020017f31387e079708bf8c26b2723f7771f981bf5c28c2c0ad0bc3a91651924b5ad29081526020017f8536490839dd94d4d464927f9f48fdfb2303c93e79858faf530c26bcdd0c5d9d81526020017f389db3aecf8e428258b1594f17ef4211b78e8bc28874eaa27a47deb626cde68181526020017f5c7c0f94fb75c7185c6c26480c474f1e2936ced115d1c698ddef6dfb29262cc981526020017fe51e5b416c089d38b1ff47e823b120f96f18f494d95270f8e2f1ede25c74347981526020017f0b1a44eae1484b766461c3791bc9d4e503fe96f999f40a8aac064a46eac1ce5181526020017ff57c5c589f0a6cef300ad7477273b9bba5e1957361bc83f22db802b6c3acafe081526020017f809741f672b4b817e32c618ce04206f871bb37cc6c4c0482019267cfc4239f4e81526020017fcd35907f5f91d334dfe2eb374ee593f4a69c28e7cc8aed187ce55dededcd5bf781526020017ffb8d4ed38bb62413eaac2c60d55466333a6fbebe238ed86aba87ce12f5dea17081526020017f61143b850ec702837544cc308c8e18f8b5e2f74055010108abdbf4acaa885c1181526020017f17a9cc64d6306bde8d72ef83f79a28af3c6e09c65c5fdd4e1678b76c132daddd81526020017f46dac6c2985de5a214c7622d090e8a31672d81ecf85267adee975f720d93d6b881526020017fbcc376b3ce8f21dae182308b08c166ed8878b83e36591219266d88832d64619a81526020017fad2a57962d76376cf9c5ae757ecdcfed590427b8ad9b9ed3e88ab0a6fb5f094681526020017fb6780990336829ed92544c2aafa6597c82e9943020b229f56e570fca0136f80281526020017ff9a9d3bf3441e71a800b869e9f46aea402a5631c010e189b090e8788a0d8e88581526020017f343ba39f32d3a3f6c98aacfa000324162cb7c2886b224858c98345e31d12fce781526020017fa52bb0a808516259878214a9159d143359f37fe3672fa99435a9274eb8ec8b6c81526020017f98d8cceb516e9afd8cc13fa08ed3c05b38943516080917dfe7fdfaa1ebd872f881526020017ffb5288d38c1cc35bfdc8cebdabda660ac42e20df1ad1f0f4f0fda526ba720e3581526020017f41afd667de087b76d869d12b26566c66cf60db578307d434b001d5085b9755aa81526020017f30ec39976ec1d965ceb9b374105cf60479099816af06563693aee89a04142eaf81526020017f258028450da654ba369394128d33120d9475e9fc1dc57fce24c902fa85d50c4881526020017fc7d4f6226677845bd6e82939b1d03a069ca3b588f5e0f3a4c95c955a476b75d081526020017f29227a18aac9105132c93d57eeacaf6ffbc7bd6c1f17d2b35d7149bd38463d0f81526020017f4caec82c9387fd0ea9395462a82156d3452a4da73090a2057c8e8c76bb8d4fff81526020017ff73b8e1bf069564f845df223eba775977465677a4b0455a9281a53284d9a98c581526020017f671d3f906a4f8d880950a587449a0ed4a62cb6868dec4ac8ffe3ccdfef72d81181526020017f4905006cf1d96495123bac00e14ba1199219f767c19e948f354eecb18b27bb9981526020017fe44d72912fd7be16d577b6d2c7032262a43195b5c7229f89550f69e5dcf92c4d81526020017f65e592ecd7a23affc3e4fa2b2cd75a7ae57ecdd35aa6b8db0261a91b957839a381526020017f6a9866ececbe1d3a649ea94eec38f25e7866b1db090903269136297d8211d6fd81526020017ff7d30d5410ea1df36b854b4ebc331790ec018b53af9af93ad322265043be74f781526020017f3d6ae776629344a740dd2ff5dee214ff9efe2ad1e435c57ba96ca87611874fb981526020017f677f97a7f97de6c4d6e5a8a1edad1550df835148701ceafe5317276294a3617c81526020017f95c5f78d79a260e4ff0cb690fb534dcc8fef86857374e971a5bb23b724b4028d81526020017fe5b862ceafc269a96d1f4c9a83ff40cb4deafbeaf7a2bb1e7e6e4b237ac7d09581526020017feb33f938872b87493eb0d9151a920d8f5e2a00effaa38ff592da0c1fbd82f4c881526020017f49945b3361ba804371e9b65abc2d26809aca10e570e39026da0b2e637641f9b981526020017f940343826310784ffcb11e7b3c88d8f1116b41f2f3cec4b28508f0c4b98f275081526020017f6250f0dfa628ca768b256c4ea3c842861a28baa50caf3c02bb65218d6c2e592781526020017f73cb7630aba73cb758908c9170d28688c194e117adc99fec1aaf669b88ef472481526020017f6e12f57d403e556771a5c38ef70221858c385d91acc15efbffbb2aefed25683b81526020017f81807d7383138a39c8c147858c96062417c0b9024d581e169eaa8c70b925295c81526020017fa4962f307d7e0e30efadb8d49a9b14768a0575048bc760321e866e92e1c13d8681526020017f0b2eabc1c99f4e2710ff4b9d7dfccd9a9d51df6763808208914ac537af7f6e1b81526020017e0ba080ecef822fb1386e30b2f3ec9e1229229e5abdd19f08e82bc346f7d51181526020017fbb1af9498cfb54885c00bd1137c8a57aaa5b5207a77b9c3a5813df406c266d9181526020017f224f8d298ad9a4b135c96bd9afe69b3f90cee4b066ae0df7f2d763dd4968699281526020017f2ae8fce0f6f56a6efec5f2df6736f395e5f66656b21a9108026c1d93c0dbe38b81526020017fd294a49f188fc7a53e62ec63c611ab470c20b29c2c9af614010bbff3ce9b36b381526020017f63c09d1964532f8c064cb2e1957be6c0ff6462d831edae34258d432f6be8280081526020017f89f2dca8f137fd3b964d8887517b7c5958ed6583d62cb9e7648e81e6a2ef257c81526020017f3dc8eb62bb159a54ee4353bbabb0163e9671ae6be2aa7eae791f520a60020b1181526020017fbb8e5aef3022afa7c94cfc1abd3d042a5f25fac5c67b1b3d07ebdfb7093ea3fe81526020017fb59e9e49a1ee500dc26af174c59f224a6345f252ca7a18c15ef75f0db7cf04d781526020017f62badde857e1ef37efc87e7dfc6d86ffc429b2d138a161cf310a125d685ebcc281526020017ff6e1b23ad806bbea36fa0d2a9249a1de1beaf5130dc71894e3e7177a58c7440181526020017f06bb45769d7e75d9dc7884bfe8f6106ae5fb3a3405644831885edd515506b19f81526020017fa60be800c0b7aa63b41b0ef3b2897290eae096c3179a4a5c0bf74c99804fd77681526020017fe1a4c63702155265bbf31873443efc633f3463fbe4fc32aa5f3242c6d1adef7481526020017f6c5994ad21abdba2c764ab70bc4a16ebd6740629808a72a7c3847adb77a0477881526020017f38589339d8e913bbe1d115a831a2dfa26a26758eca20fc91f950ed26e26fcb4181526020017faff05cfe9ae2568c5ec95bd8d1f7d639f27656810ebd64366fc04674d293a19381526020017f682465945bd80829204af41ea8c1ec5261c301d5f11b0d268d4a2f3e434a03c681526020017fb91b8c416349e65dd9ed9839d88a126a9e13eeba8b3db6ffc98c69d93821f6e481526020017fd609b14fb13196b398e2da0128f4d4e4d4b80d5bba953b7a16b7788c2443626781526020017ff8688c01febbc77c2f279c3e5e8fd63ef6c701f4f4dbdc104aa902ec85ec21b481526020017fc6afad031bbca7ffdb86cb06c0f2de74452b8070585e1d859113896bed5c3ed081526020017f52ed046834e1e87163d3fa25150a8eeafc93965403ac65df56c70480ad3489ce81526020017f8a59607d69b0d8e48403ba1347ded1ad9e42edc79e98f13a627dd03640d6bc9781526020017f42384dfc76c2261be38b93b48eb560c04112137480398018db428f10223aa14b81526020017f356957efc12d4f38d5cf7f2af8f891130ee12ef6fdca19dd79ded7a99af807f481526020017fe85805e529ce96e4e6137e838b4c49f3435341ac5149a6c2e5ab307a060edc3b81526020017fda5228d7d32faae13592a2a4bb4a866ac8310e7ef1f2731cc695fcc817fd2ea581526020017fada611d5228ee5544b3c454b12bba526998ee30a59f53e24284c198f6f87b12281526020017fdd2cf12ba71c08354333cf8dfa3682c1ce09f762dd046befcb5395c2bcd3199881526020017f5bd65148f1f7928edf5c0ce68d0e6b596af51222529b8fa4c34e6519e9b7ff3f81526020017fc713430a19fd8329b2a86c7317c7684c6ce24bf8e21b0cd11454a63a2847982c81526020017f3f159a6131c681d694d7de16632ecf668882f7a2f0e7f26ab8189d9f285cc10681526020017ff600f793827845c73c3ff807de703b2cc313933b11c4592792fdf215b9627d7081526020017fba0cf479a5a1ca58cc06b41929e354997b74cd8dffdca1a499977a16e470e34e81526020017f0c5a5169b275cbf9a54a14cdba7e9e6dddd20338027c9b1eaaf971ce05a83cc781526020017fb859078a2a8c4e6ea9af794f1e77c5440d6550caa5479343805203672b1a3dad81526020017fa715c0be7373550325ba3bf36ad60a32872d2ba8fb04e58eca6d37c5c634f08281526020017f7db24a859c583ad266991686d33fd15c28b03174558cad5bdc18ac438eff1a9f81526020017fa57d98ef02015a17e629e5d3f02d46966d0e846b4550e4179d5d0b401349f67981526020017fec1d1b5af73bfa0e3bb2db2b33f835e4d5e799b69ed327e183c52e0ed078dcc381526020017f4533da2e2504da6a57fa1c3d8bb97571a19638fd2798f2fa235de6c607776a6b81526020017f55db1d454121f30ecdda7093a7b09283d90e003f764604c961effef4e7ba9abd81526020017ffc5b0db1adcb7288823b81f67bddb1c7e555bf1ae4103f9864ce0f914a1d65d081526020017f93904f1bd136c95e527d74f89f296f9e0efda41ab6c4f2f05ebaebab0665f33c81526020017f960e5935f2808ac495a7673d883bbc9f1fb17cdd4aea563e07f242882ab00aee81526020017f9f06d1b08bd1709afa711f93121c9273914b4593dc54c2b3f3bbd8d55d5c2ccd81526020017f74320342b48eeae7cc2bd448ded30fc2edb70e56dd739b4933c90dd301d5516e81526020017f40c395ec14a6d8bbd53c552de98d1193ba0ab2eb49d3b8899ea658b8399c814f81526020017f6ecbdc8b817b9b54420d4b5065bb612ce9480d53f9c17543efe3a7c08afb98e781526020017f1393403f5b20e149fda444b509038b057ac8ffc011f8f133860435652f72894281526020017fd3e640460fb0b63dc65a137ae1c98ca406fb4dfd96de087e11a5a298649cd96181526020017f4229e5243c82d3e961c0a60eda6b44ebd744586d8822daf433dbb43991ab280481526020017f8bd885fda07569ed5a3843a595025669bdbf62b01b9dbb4e451465dd4c56af6181526020017ff64d5c027411341b75141ed4a45ec4b713a05c1ebe31cc971f89d22079d036fe81526020017f02dc30554f01cbefa971ab69b106a0decfd8ebb9231827325fcf72d05836534581526020017fbe9fd93f35f052c80118fb4a0e10bb81938dbcbe59bd2fd3ae424905f4a1b43e81526020017fda27bcb34a75485d9984927abab0d3d96eac4e6ec404a92e34d790909a4b1db481526020017f8f22481bf36cc031ab74bf2579b958920a26043499d579ad8e0eaaf52c87d4c681526020017f4f99662d2926bb9cfba3002ae795f7ddfec39501ad05778382de9a1e1dfd608881526020017f8ab3c2c65154b3f6f90ef8147de924a56576da598dd74ccf7efc22c5cf853f0281526020017f399f10895f8105041260083765a5ffbd74ea9fab60c1c83394e217e08007ca7a81526020017f50619977c6b7f31897eea3dbd300ac16708a8c64e18fd23e207efee0238dd27781526020017f2245c028378c16e03424e0554e827f7efd707e45cc5c2ecac422262b9e3261b281526020017f5abafd6b6f411acd16c3dd93c76b52aa0b0052275d8422b005b505cb9c3216b081526020017f0195407ee4965e72d4a5025922922d615e3e849ccfe627f0c9a718d3b68865c081526020017fea8a22c90806af8a3f7c49c1fc3ab71a35b8c2f4672b751db87bcad7e110a2d681526020017f6287820bdbc7eb3ade2a9e7f06be6b6c1b8ef840c514ee61c1da36e46a7e197f81526020017fa0b7be5d08e9a8c936670fc5ae276919e3036d50f791937947c0af3f03d6bf1981526020017f2f511ab130b867fac5c3808b828be0fbbedd4c628300894969c4207d731a271081526020017fdd4ede3df05df04eb7a5d42a0faea5245bb7ff2cd72089e3252f7c1d2457615d81526020017fe983e3bdb071a6ed127865b98842034e34873643484596ac58eebe0c6c596f2681526020017f443d2871bcbaffc187f59305255960c2e20c90035b13cf9773438e087b967d5781526020017f4cb8281ed639fab4a077b385dabb577265ed6887dc8c246f6908e88d5b7930ee81526020017fd5e7f58ef48650773dc1958f4428fb3e2c3c7424a06ff172de3892534807b92781526020017f4bea44ae69d735e134a5304dab70f172741dcde3bd76ef4fdb8f653f143bdcf981526020017fb9cdd7b9ddce0e8638a11d40ef5fb1d378ebe298fb41b25f2928d84fe204967581526020017ff31bda66ea3075c1e38bd2d0977fe6ad7fb1b9a8d0204e279087e76ffa4f0d8381526020017febb5f10b7e9d039f878a942e18780998c4e5c97f22244df4eef19f8b8c8adc9b81526020017f20394740da47beabdaaa527fc0ce88714a2a7af375384d3bb74058ff37bf080b81526020017f0a1a6e1eac6f067f813bf9cb8251475a0bb2626324718718826d90717b43b56a81526020017f9f2d9f069eb1c6eb35e353e8dc5ef3ec2e4c96921eb553324fada9f76a21cc4f81526020017f1bb7cdd51558f1570dc17d543bf78b901d67fae20118272b4f9af040684b976381526020017fdeb4b214de8d90e3f5bbb0fc5723e24c8cb5d4e733d02ae3c08dffbf2516a17081526020017fcf5ff8f9090936fcac00eaa5ab5deeb274be6b953ea05fed64c2a5b1ef006aa281526020017fe766eb6c1932329eb6fb4b74ff3aee342b23d643bfed9260a33b7e78253a31f281526020017f9bc46f3c84fcf468692f85133f42f3d2ef94272d185e7af1622b2b879768195581526020017f1ef41c79e6bcd4ce5dc9b5970f04e8fd3a89cbc9d66fd1b966496bba53b5eea281526020017fc7715d66e85f4eff3d56824449cd2faf045352d45c3a11fb3650b281538130a981526020017fee529a4a5356895c31f93ca692a54414854b856b27301636a1eeb816f13d48d181526020017f97a4d230aad02b175072120e5b3436cdb111c298dbc0c7c9407099456053fa0281526020017fc0d660a9463f633eb0089fee8786a7d2acfea8002dd9eab816b94c197397b5a981526020017fbb955c4d0c154ff4936c5d1f4e40e78941bd9a0dab4bfb82899ed10ca4dbcccc81526020017fbb127913525e4d68dae4ad1ce3729898a411fe888919dba90b96a4f5b116286f81526020017f72bf3f421bd42c41afb9d019650080c5cb16e170d300285d597ebd61da705ad481526020017f34db6178f891375109ddf066bf649cc90ffda67b24f0b2dcedcae39baa7b889081526020017fee9d40b311181b9a74f236d7c9ebc03e2ce718c8a1d8b10e6f66f80cae43d57f81526020017f22eced8c71bafa9980579a3ef205b9b4df377fe46ac2d753707ad6fea8df1e2381526020017fcc330a2a40cea686279062ba439a6a8d7b83888495a280de38ea2a29e5ad851f81526020017f219a728ec5dd515b9c37468c4182b17ca9ef6dda8a413704b87aff6a46ecc58081526020017f561a226bd893f85bc4bac0cac1f670067197028448e6a4f9206c87a7f4eb57d981526020017f4f0497680aa7b6aeef61615e1c89b2bebd428111b44159a015a1edfe14ba4faf81526020017fea31e602228f15b1f0d42f8d150b420e6b3059c0766ed0d9e647f533dc4d93f381526020017f1505a338c948bd322b8d01edc77c4797e24ccbbef003a4328a27f135de25be3f81526020017f24978f44a92ae84f181055f70b0c56e2db3e8510f19486153d3d4db1c6fc315981526020017f415b84ac5bee78047a9516bf1449fa64ef96dccbf7cb2976ea9e4eea0ba8c70a81526020017f42b86a965548f5261ceef1a9842569ea6df516d67c5ecfab12af08d9e467b5d981526020017f7fed5d196c46e6625ed52a35fb1e59ae23b0bc42682589778c63c5edafe2505e81526020017f7b475da8919e54844b21556fdc03dbc6208d69ab6e184b400644848cbe92ece181526020017f02d900e304141edc7f65944705676b9abb4b9185fcc2fb05484b71945f52f4d581526020017f2bf9e14cd252e197926deb873ded7c03b8315483600966394614b2a555c2a5d581526020017fd813cd28df184625d94252dddea1af6fbdcb0f596b171676df08cd255f54299281526020017fac0cb3e4e5b346897cf8c06a100ebbaf36231c0752fadc73d3f453c4528c3c7381526020017f29ba9304cca535ac287360d746acf4d8f43e145a192a9c4af716c204ba5f70ce81526020017f3cfa99c2e647b905be6f8f188bdc25ff2d2b91649cfdf231c1e168e2293fa2c481526020017fcf8331be45c8b7b843f5a250e166f4c704094d8555e6c4c24a8b33f1718a7ba481526020017f8fbba85d755e659cae5a4bc105e79f2ad64b1db0bce604c9ee79d47b42dee5c981526020017fc64ba167a1e2efab22668cb86a1d7859163a181db81a439dea408a7ec4df002181526020017f05f6bd2b2da764ba4bcce777270cbb6f07e7df7d9ffeda7e2c149e886dfa2e2881526020017fb2a43b7f0c7161e21fb791acb1eff239e0ea15b10054de0a8a41881b28259ef881526020017fd6d6afb054beec7a75f2f9a2f0bcc348dc03cdd883c07e700afc3b7fbf791a0b81526020017f8677a9cd72232acf159b5d1cf22b6cb12a0e8a55a282648a026d51b9bfa290da81526020017fef15cafea0fb50c95689b14eeb8f65cf6fd357f4bf7f330bc0bb21194779287181526020017ff95b465a260f5204e430380343615e56d3ad12a2344717507e9a0ecaddd3cd8081526020017fef07ead907cbf0e653b94a7901f7c5e22b9a07ac64940853347f8fad4d84192781526020017f697d18665e7814936c0004473e48521f19d3df59e3ea08e1f73d618a66d7ea4381526020017fbdaedd19afe7fb006029a5188526b0b8151bcfb94c1b9ae95eb649369e786d1181526020017fd109569caa2dd1f823502b4bc6a43689ed9f72ed56b1a285cad67f5249eda5f981526020017e9fcdb1840e045d5b141f123abc8718d013175f5a42faf3183fed48b46bf05d81526020017f37bcb8a542f561ba537bd935685dd84630d14fb36a22f9fab645a3bd6e30c70881526020017fd51a73cb8ae979874fbabfb6914ab9e6924f2d0d44680af88ce27977871367a781526020017f4af6fcea13b1d3a7fecec5183b86a64992bad775f27d68b60470d65173e9e74181526020017fc42c082956fb4036dd14d2375801355a7702a143042cf06a01f006fec52f63df81526020017f8dddad8bda597236317f1547ab2e8bb50943d74ba2c52b010406717cc9b5ec3b81526020017fa6fdcef115ce969eef2224702299219b25e9bc1a2acb42eee7cf2634253a9dc681526020017fee8cfeb71af3efde07877149291d8ba4d2e3101b0b7a6c741a41fe8771109d3881526020017f9eadce0ee48273d1cd9662753e44a01ec3bb6c6269c247e5ac7b0ca5d2d6fd9081526020017fc837ab63e80abd27fa3353c3974c5a2b7bcd979f68fd0f9bbda96f176cda96f681526020017f6b9cac2d45ce0a36def870c45160501ee7b7c53d805b80392d186ddcd993f1d681526020017f048a50b73f5240a6f0adeb37c9b599926e1e0a442e3da14ad6eb4efe0dffc2e881526020017febfee3df0b37beb81df5e58e2c29ceac61d80eb35dcf97ad2e4a365fc7afa3eb81526020017fc2fac4532b0881bb267f7d3399e2827d59572486eb35673ee9b11a24d2dabeb981526020017f32f4ac0c9ad04e9603c09afb5719280b9bfd18a072189ec6ae7b425a3e332a4681526020017f98ce2c7978dd440e1cb5ec200f3dcb24a41c1c18c6f8e9c1bc5f942e293b6d2f81526020017f90872529a2d3ea441eed3e0dd8237df901b92a3e938acb89bb56eb8966d3f1b881526020017fb79fb65f3b396799dac5ef83ae273f4e0ad5c8ef2d0c1666db2936422e8db53e81526020017f7f1fbdd1f6ab31eadf0b8012d68ae9f2299b2ebdeff664c7a76c99ca59b8a95881526020017f7896efaa084194567f5f1a0155d0d4d571f105ebdbb3e323287941517810d7ba81526020017fc047e35b7fd0080ee9c6fda271b8ab054d8ca3afd542cd6db9c0eb8bf1b99ccd81526020017fd7199667e4fe88ef55f3845689e670b8f1dcf1ad48af90518fcfbc0b0d3a050681526020017fc60d7e78cc35aaf36f1bda4933ac441d6e5011411e165d8fdfeb62190d13742f81526020017f5a8fc4ffc213b9892f2390e760160b4292cee4727ab8402483e99469aa5a537b81526020017f130ec8edcddcb39d382c60b81357b809443257d35f7fb5f7a620d3cd85c8411a81526020017f1462f32c42069a49ecd0ff89d9b8ca6903acfb1ed34969a5ea3ff32478c49de781526020017f0e400fe520923173c35dcde6afeef27b71868539ba26eed73adad23cc1ffd21d81526020017f1d8b92f9daf96c3d785c564f742b912dac842bddad8386d7d5b90e56c8ecb96d81526020017f37fdaa0dc7319aa5ec9708032569580be4147c7d0c5a7dde646bcf2da752989081526020017fdae55b124b3a64b41b9058908c31623df2f753c9473dd50e6f916878a9f669cb81526020017f40975bdf8775386a42ab199a838cc870f20192c8a5a5fc2b2c30bb7a4a788e5d81526020017f09bdce03b7d6014da5e6a5ebf0678bf9cd74d7803ac0ae39f846119400df8cee81526020017f0240fd470e6ab28a9781d6c7678e53798a21d2bb970c12f8bb68e9268231f71781526020017f950c17876193f4cc592b91a8fc8fb1cacf390a139bdcc51c0968895b2ea5fefb81526020017f82920c7f782649b922d442c85d6785d469488d86362ffce7ad171a0b3d22ed2581526020017f0f3c30edfdc7e6c6da6321673d100854972be47c3737811d01de9dc163c065bd81526020017fd828a3185456c6b2687e1c375db095e3e2573e63d70b10c4bafeae2042b06e6781526020017f0f99d60c135aeba05c90d4405557f3530a4a6f56ffc8c270d356c62b127c81ef81526020017f6dd92970b2933b0842f0fedccb7a9a9233cdc15d72bceaa6a087b0b902bf6d0481526020017f277c61ac5138a2e520857ae595eb133c5bcc93186b83f3c50d30f6f30eb13c8481526020017f60f6d8d9e1cc5615b63ffc010a85918ac788ef2a1043656a49333388c62d4df281526020017f75edd98367e7c0ae1dddb98dc3f578e920d009b9847e56d0402dc7b772330ec381526020017f4d1302df9f64530b92a2ddac7a27283a34baafaa8a124fa83c17fc9db0c51b0181526020017fef67262558343f035e12c1a1e2b4d700dfca203000e4e8859695349f5388e0d981526020017f1edc64cbc18638ccc528294492df1673f8609133487cb2c5d336cb983ec0e23c81526020017f845f9eb9226b9a027f8bb977fad767d7175ad2376a8a30e05a7cda9d03e3316581526020017f286eaccf4876643b680bf71154ce7ab52323449e401ebd3ca38f5e6c86960c3381526020017f4b97fd63e587ba1bbf7f7f000c514a4db4c5bf25acd87a31874ac4a1cc9cfa4581526020017f028003c645eabe5871a911543de3eee72a3e14fbf63d421808c30756b0a535b281526020017fef72a90edf0613a49e6513dc08ff1b474ce8dc60637362ac003d00f8464eb2f681526020017fdbdc7d846636bbc4e2b5e0a4058e1d502d1fe59d9e8cf25bfa90226ef69df20081526020017f68f63f73703fa2e197616b7af997c0438a6cc7475e4cd1b8777d41e8a16933b781526020017fde6f640e4b109fba4c204a3f0fb17d462e1baffa3e745369f0c78dce2db59b7081526020017fb65cc609089914ef56edc199bbb7d0708ba71e4a4f91898ca55b1cb8923bc7b481526020017fcac6dbc2d937ee1d441a22c250f7982d62328f1a80fa84046c04b893ac8f7d2281526020017f7a65c50448448ac72296bdde5b2f241832be6e8af5fc469bdc2c6db67801bdab81526020017f911ec952b8694f42cdb2057398383342c68c425c29d0201849f86a451fab507e81526020017f8edb27568c165cb9ecaa4f30bb31b60ad3cc4e16aaab0d2479b11216b0505e9881526020017ff7e874ed64e3a59a9e6129a4d57e5be6902893be6a09e0389f8866c54795d7c781526020017ff2085dc39f350256f99215a3094b33ef4b9a98b3e86eded1369a8c0c346f544781526020017f6e160771c14785a7cb259577367a167da7b2eda5d70fc4053b56ebb6e8bee82581526020017f3fc521e2ed2f88d47b24e71a42d030cbd48383f75d47d4ae2bd0d1380cbc47ec81526020017fb51bedede8b88986a693d8c12e4edf08e81bfff72028434aece17e01f6ca8c7881526020017f33f29780285b863d59733a0f296cf9985335b2bb9e047081fb3e097d0724f74a81526020017f61977c42e1f71573d404913fdb11a2d2643536520e7aa03c226ef4f046f09a4081526020017f025671275c672eeea24c3ce09e835409c67770f9010e84170b298c5a69c61f4b81526020017f75f8d1d7b66304eac10ee2f4586146bb52bbb98ff0be2b8197cc4d8b14a92ae181526020017f704e2557af4b6d2dd7d82436505a60562b7351aa179059ca94f74ecc20a29ab881526020017fcf18a49cd56e298a6c84657ba4f78f78c61801790bf6cdcb062352df1d08693981526020017faa7b2ab865ef4964a398412131e62da9fa6ed3e135f9700ceb4734b3b56c41a881526020017fedd0dca4feb25755536b9fc08c49f8c3c49c124a725c7f2090e2ad1160ed58c981526020017f96da9a07a137660d6e60cd916217462a9511aea8cd078c430a882daf7bef17d981526020017faf263671c3407f1331f5d9eb93572732d13a9c658458233249ca958866bcb9a781526020017f99b23f3ecf5a4786c87075f7583f5ae9c0545533763d06c15a50e14a9c238e0e81526020017f1cc248b1694c3d8106f2b5f05ee5be455244596045f4ede8f65dc1731c3a154281526020017f0ffe9a55425766e34c175c6745d979ee4f8dec3c9f0be810dd79cb904aa3639281526020017f6ee19dde4e93a03085c728d26e7cf67e1f517fe3e004a27a39b83a8a4b2aba5981526020017ff829f757ac8bc270be51ee60f0f5796ad8dd707409d2e5108f0146176c3a916081526020017f0b6cb2a1f2fde02af0eeb646e31fffa636564daed562b766e3f88b102ae1ca0781526020017febb24fa20f6a626f6080c73c50ccd950ead4a134010e36a3649fa38126d4282181526020017ff3dd9ab4131c40ed4c169715efaf2038942030edf84724344f43c690368bbdfe81526020017fafc37f099831035ce55b0c0a6b5f8f2ce3eef0499d82ae1d4adc565ebd64396681526020017f4059f2d3dfbdb2b9c4db1d755e91ed052ced7c92c5dbc738dedfe51d63b4b00c81526020017f53d89ca80d9aa46b83830c4c49aa4de84ee1279a9d12a5b5708a8017385d460b81526020017f4a0724dd1b56cc9e22cafc1bcc1f9afe193829522b8438a1183f8b4c7d4ee93b81526020017fcc67b4c216f7ca590fe3239236c273558e4c67d272946aa652cc8f64d0d1d67581526020017f756630b9c30969adef4d3bd75334ab3188a92090b6d5d2e95d593729a61ac0c381526020017fc51c41afc7a7c772c553c4d80dedc98966a23e3daad69bca87cea804f05aa01281526020017f45038ce21a993fde4b1b06eb86566b25aec20ce7e46a11ab9e187ff3b74cc0ac81526020017f12404a9617d3c902b914bd20b15e0f307399f33c6c0c0a294c99d65fa167723781526020017f397a0252370668e464e4a00f2ea80218ea0c1d980d095fe971361ddb5e08fc8681526020017f0ba779d88db8a6bea7e737ad12e08cbfddc8bf1b75448f1b5e50514a3564002b81526020017f869a980c3f4765838b890d0f161711026cf207677aafa18327637b46da39d91781526020017f9476b39ff0014278981cda7f6440db452a50f39757355f2c6ca2f601bc061a5381526020017f8cd3772589b43f4321553c3b068341aa802f5daec00f8a31e860097adaf1239c81526020017fdc7bc1343b4a9a5000e83fd7a366f619f2ba7eb424502d6d874db34af7af384c81526020017fa085b2650985327dd6ad736345084284f116963c8ea9fbe9254e6240b13eeb4a81526020017fb387a891d5f76aacbd186c08727a35260d6803b16e76439d542e91a8f45d897a81526020017fe4654e733d4503c306418a4a1487d0e775a3a77ac06eafa1485d6e79b5d0858081526020017fc523d973d7fdfb0c5630884b20288ef15bd00802a97aa0b225df9ba1ca2b546381526020017f2e3b50ff89121202ebb728125bb6abae76c0544ca4b496e6e207cf8ce79a53b781526020017f68729d0b87f3ff1f679169f3ecc7bf32035fecc1fd91291daa69512752b298b681526020017f3c0b05909f8064ad029e5edd774f6dbd3a74cc93dc8b0c6efabcfd8395a8948681526020017fa95a6dc19f8b4934a5c947ccb0166a424be4bfbbcacf93b8eb228b780f3e356481526020017ff412e66c2f10439e5bcfb94aca173d4db126b53c07186f4578f30d4c502b4f1781526020017f0ae16bc39b989d06eb5b2dcbbb6e917f7462fee2934a98b822142b54ad9e8d4681526020017fc30f16fc3150d4e028127025a389b6f952067a6c216eefbbbefb080c64c021b481526020017f785eae4e430f517f33c1266b661276a6e986439022b257ae635ac22630ec733081526020017f93b3673983157ce91230e30b13f4d5003ecc7619efabfc1441324d4439417bd181526020017fb0dfed624381d7b4786f6478dd23475130b35b460f96e56cfb3642b5d36c7f2681526020017f659d8e15cf2f77ba781a5d63306bd50c389051a365d4f9323b3b95b3a302860281526020017f2f5e9e57ff0e0b2a68f0aa74418fa34eacb589d13d1177cb907651671a9fcddb8152506010906103136200752c929190620076d7565b503480156200753a57600080fd5b50604080518082018252601481527f5468697320557365722e2e2e2042616e6e6572730000000000000000000000006020808301918252835180850190945260038452622aa9a960e91b9084015281519192916200759b9160009162007715565b508051620075b190600190602084019062007715565b505050620075ce620075c8620075d460201b60201c565b620075d8565b620077e4565b3390565b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b82805482825590600052602060002090601f01602090048101928215620076c55791602002820160005b838211156200769457835183826101000a81548160ff021916908360ff160217905550926020019260010160208160000104928301926001030262007654565b8015620076c35782816101000a81549060ff021916905560010160208160000104928301926001030262007694565b505b50620076d392915062007791565b5090565b828054828255906000526020600020908101928215620076c5579160200282015b82811115620076c5578251825591602001919060010190620076f8565b8280546200772390620077a8565b90600052602060002090601f016020900481019282620077475760008555620076c5565b82601f106200776257805160ff1916838001178555620076c5565b82800160010185558215620076c55791820182811115620076c5578251825591602001919060010190620076f8565b5b80821115620076d3576000815560010162007792565b600181811c90821680620077bd57607f821691505b602082108103620077de57634e487b7160e01b600052602260045260246000fd5b50919050565b6127e480620077f46000396000f3fe6080604052600436106101a15760003560e01c806370a08231116100e1578063a22cb4651161008a578063b88d4fde11610064578063b88d4fde14610468578063c87b56dd14610488578063e985e9c5146104a8578063f2fde38b146104f157600080fd5b8063a22cb46514610415578063afde90c214610435578063b21cdb8f1461045557600080fd5b8063938e3d7b116100bb578063938e3d7b146103cb57806395d89b41146103eb5780639f402f3b1461040057600080fd5b806370a0823114610378578063715018a6146103985780638da5cb5b146103ad57600080fd5b806323b872dd1161014e5780634f6ccce7116101285780634f6ccce71461030357806355f804b31461032357806357ea89b6146103435780636352211e1461035857600080fd5b806323b872dd146102a35780632f745c59146102c357806342842e0e146102e357600080fd5b8063095ea7b31161017f578063095ea7b31461023557806318160ddd146102575780631cdce9fe1461027657600080fd5b806301ffc9a7146101a657806306fdde03146101db578063081812fc146101fd575b600080fd5b3480156101b257600080fd5b506101c66101c13660046121cc565b610511565b60405190151581526020015b60405180910390f35b3480156101e757600080fd5b506101f061056d565b6040516101d2919061225f565b34801561020957600080fd5b5061021d610218366004612272565b6105ff565b6040516001600160a01b0390911681526020016101d2565b34801561024157600080fd5b506102556102503660046122a7565b6106aa565b005b34801561026357600080fd5b506008545b6040519081526020016101d2565b34801561028257600080fd5b506102686102913660046122d1565b60116020526000908152604090205481565b3480156102af57600080fd5b506102556102be3660046122ec565b6107db565b3480156102cf57600080fd5b506102686102de3660046122a7565b610862565b3480156102ef57600080fd5b506102556102fe3660046122ec565b61090a565b34801561030f57600080fd5b5061026861031e366004612272565b610925565b34801561032f57600080fd5b5061025561033e3660046123eb565b6109c9565b34801561034f57600080fd5b50610255610a2f565b34801561036457600080fd5b5061021d610373366004612272565b610ab5565b34801561038457600080fd5b506102686103933660046122d1565b610b40565b3480156103a457600080fd5b50610255610bda565b3480156103b957600080fd5b50600a546001600160a01b031661021d565b3480156103d757600080fd5b506102556103e63660046123eb565b610c40565b3480156103f757600080fd5b506101f0610ca3565b34801561040c57600080fd5b50610255610cb2565b34801561042157600080fd5b50610255610430366004612434565b610db2565b34801561044157600080fd5b506101c6610450366004612481565b610dc1565b6102556104633660046124b6565b610e2f565b34801561047457600080fd5b506102556104833660046124e2565b6110f5565b34801561049457600080fd5b506101f06104a3366004612272565b611183565b3480156104b457600080fd5b506101c66104c336600461255e565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b3480156104fd57600080fd5b5061025561050c3660046122d1565b61126c565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f780e9d6300000000000000000000000000000000000000000000000000000000148061056757506105678261134b565b92915050565b60606000805461057c90612588565b80601f01602080910402602001604051908101604052809291908181526020018280546105a890612588565b80156105f55780601f106105ca576101008083540402835291602001916105f5565b820191906000526020600020905b8154815290600101906020018083116105d857829003601f168201915b5050505050905090565b6000818152600260205260408120546001600160a01b031661068e5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e000000000000000000000000000000000000000060648201526084015b60405180910390fd5b506000908152600460205260409020546001600160a01b031690565b60006106b582610ab5565b9050806001600160a01b0316836001600160a01b03160361073e5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f72000000000000000000000000000000000000000000000000000000000000006064820152608401610685565b336001600160a01b038216148061075a575061075a81336104c3565b6107cc5760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610685565b6107d6838361142e565b505050565b6107e533826114b4565b6108575760405162461bcd60e51b815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f7665640000000000000000000000000000006064820152608401610685565b6107d68383836115bc565b600061086d83610b40565b82106108e15760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201527f74206f6620626f756e64730000000000000000000000000000000000000000006064820152608401610685565b506001600160a01b03919091166000908152600660209081526040808320938352929052205490565b6107d6838383604051806020016040528060008152506110f5565b600061093060085490565b82106109a45760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201527f7574206f6620626f756e647300000000000000000000000000000000000000006064820152608401610685565b600882815481106109b7576109b76125db565b90600052602060002001549050919050565b600a546001600160a01b03163314610a235760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610685565b610a2c816117ac565b50565b600a546001600160a01b03163314610a895760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610685565b60405133904780156108fc02916000818181858888f19350505050158015610a2c573d6000803e3d6000fd5b6000818152600260205260408120546001600160a01b0316806105675760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201527f656e7420746f6b656e00000000000000000000000000000000000000000000006064820152608401610685565b60006001600160a01b038216610bbe5760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a6560448201527f726f2061646472657373000000000000000000000000000000000000000000006064820152608401610685565b506001600160a01b031660009081526003602052604090205490565b600a546001600160a01b03163314610c345760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610685565b610c3e60006117bf565b565b600a546001600160a01b03163314610c9a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610685565b610a2c81611829565b60606001805461057c90612588565b600a546001600160a01b03163314610d0c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610685565b600d5460ff1615610d855760405162461bcd60e51b815260206004820152602360248201527f596f7527766520616c7265616479207374617274656420746865206d696e746960448201527f6e672e00000000000000000000000000000000000000000000000000000000006064820152608401610685565b600d80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b610dbd33838361183c565b5050565b6000600e548416600e54600f8460ff1681548110610de157610de16125db565b90600052602060002090602091828204019190069054906101000a900460ff1660ff1660108681548110610e1757610e176125db565b9060005260206000200154901c161490509392505050565b600d5460ff16610e815760405162461bcd60e51b815260206004820152601c60248201527f4d696e74696e6720686173206e6f742073746172746564207965742e000000006044820152606401610685565b6000610e8c60085490565b90506107d08110610f055760405162461bcd60e51b815260206004820152603660248201527f5765277265206f75742120537461792074756e656420666f72206d6f7265205260448201527f454d494c49412070726f64756374696f6e73207e2e6f000000000000000000006064820152608401610685565b33600090815260116020526040902054600211610f645760405162461bcd60e51b815260206004820152601d60248201527f596f75277665206d696e74656420656e6f75676820616c72656164792e0000006044820152606401610685565b33600090815260116020526040902054600103610fd7576702c68af0bb1400003414610fd25760405162461bcd60e51b815260206004820152601d60248201527f496e636f727265637420616d6f756e74206f66207765692073656e742e0000006044820152606401610685565b611025565b34156110255760405162461bcd60e51b815260206004820152601d60248201527f496e636f727265637420616d6f756e74206f66207765692073656e742e0000006044820152606401610685565b611030338484610dc1565b6110a25760405162461bcd60e51b815260206004820152603160248201527f4f6f707321204c6f6f6b73206c696b6520796f75277265206e6f7420636f6f6c60448201527f20656e6f75676820666f7220746869732e0000000000000000000000000000006064820152608401610685565b6110b6336110b1836001612639565b611928565b6110c5336110b1836002612639565b336000908152601160205260409020546110e0906001612639565b33600090815260116020526040902055505050565b6110ff33836114b4565b6111715760405162461bcd60e51b815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f7665640000000000000000000000000000006064820152608401610685565b61117d84848484611942565b50505050565b6000818152600260205260409020546060906001600160a01b03166112105760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201527f6e6578697374656e7420746f6b656e00000000000000000000000000000000006064820152608401610685565b600061121a6119cb565b9050600081511161123a5760405180602001604052806000815250611265565b80611244846119da565b604051602001611255929190612651565b6040516020818303038152906040525b9392505050565b600a546001600160a01b031633146112c65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610685565b6001600160a01b0381166113425760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610685565b610a2c816117bf565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd0000000000000000000000000000000000000000000000000000000014806113de57507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061056757507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610567565b600081815260046020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038416908117909155819061147b82610ab5565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000818152600260205260408120546001600160a01b031661153e5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e00000000000000000000000000000000000000006064820152608401610685565b600061154983610ab5565b9050806001600160a01b0316846001600160a01b031614806115845750836001600160a01b0316611579846105ff565b6001600160a01b0316145b806115b457506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b03166115cf82610ab5565b6001600160a01b03161461164b5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e65720000000000000000000000000000000000000000000000000000006064820152608401610685565b6001600160a01b0382166116c65760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610685565b6116d1838383611b0f565b6116dc60008261142e565b6001600160a01b0383166000908152600360205260408120805460019290611705908490612680565b90915550506001600160a01b0382166000908152600360205260408120805460019290611733908490612639565b909155505060008181526002602052604080822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b8051610dbd90600b906020840190612105565b600a80546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b8051610dbd90600c906020840190612105565b816001600160a01b0316836001600160a01b03160361189d5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610685565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b610dbd828260405180602001604052806000815250611bc7565b61194d8484846115bc565b61195984848484611c50565b61117d5760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610685565b6060600b805461057c90612588565b606081600003611a1d57505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b8115611a475780611a3181612697565b9150611a409050600a836126fe565b9150611a21565b60008167ffffffffffffffff811115611a6257611a62612328565b6040519080825280601f01601f191660200182016040528015611a8c576020820181803683370190505b5090505b84156115b457611aa1600183612680565b9150611aae600a86612712565b611ab9906030612639565b60f81b818381518110611ace57611ace6125db565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350611b08600a866126fe565b9450611a90565b6001600160a01b038316611b6a57611b6581600880546000838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b611b8d565b816001600160a01b0316836001600160a01b031614611b8d57611b8d8382611e0f565b6001600160a01b038216611ba4576107d681611eac565b826001600160a01b0316826001600160a01b0316146107d6576107d68282611f5b565b611bd18383611f9f565b611bde6000848484611c50565b6107d65760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610685565b60006001600160a01b0384163b15611e04576040517f150b7a020000000000000000000000000000000000000000000000000000000081526001600160a01b0385169063150b7a0290611cad903390899088908890600401612726565b6020604051808303816000875af1925050508015611d06575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252611d0391810190612762565b60015b611db9573d808015611d34576040519150601f19603f3d011682016040523d82523d6000602084013e611d39565b606091505b508051600003611db15760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610685565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a02000000000000000000000000000000000000000000000000000000001490506115b4565b506001949350505050565b60006001611e1c84610b40565b611e269190612680565b600083815260076020526040902054909150808214611e79576001600160a01b03841660009081526006602090815260408083208584528252808320548484528184208190558352600790915290208190555b5060009182526007602090815260408084208490556001600160a01b039094168352600681528383209183525290812055565b600854600090611ebe90600190612680565b60008381526009602052604081205460088054939450909284908110611ee657611ee66125db565b906000526020600020015490508060088381548110611f0757611f076125db565b6000918252602080832090910192909255828152600990915260408082208490558582528120556008805480611f3f57611f3f61277f565b6001900381819060005260206000200160009055905550505050565b6000611f6683610b40565b6001600160a01b039093166000908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b6001600160a01b038216611ff55760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610685565b6000818152600260205260409020546001600160a01b03161561205a5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610685565b61206660008383611b0f565b6001600160a01b038216600090815260036020526040812080546001929061208f908490612639565b909155505060008181526002602052604080822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b82805461211190612588565b90600052602060002090601f0160209004810192826121335760008555612179565b82601f1061214c57805160ff1916838001178555612179565b82800160010185558215612179579182015b8281111561217957825182559160200191906001019061215e565b50612185929150612189565b5090565b5b80821115612185576000815560010161218a565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114610a2c57600080fd5b6000602082840312156121de57600080fd5b81356112658161219e565b60005b838110156122045781810151838201526020016121ec565b8381111561117d5750506000910152565b6000815180845261222d8160208601602086016121e9565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006112656020830184612215565b60006020828403121561228457600080fd5b5035919050565b80356001600160a01b03811681146122a257600080fd5b919050565b600080604083850312156122ba57600080fd5b6122c38361228b565b946020939093013593505050565b6000602082840312156122e357600080fd5b6112658261228b565b60008060006060848603121561230157600080fd5b61230a8461228b565b92506123186020850161228b565b9150604084013590509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600067ffffffffffffffff8084111561237257612372612328565b604051601f85017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019082821181831017156123b8576123b8612328565b816040528093508581528686860111156123d157600080fd5b858560208301376000602087830101525050509392505050565b6000602082840312156123fd57600080fd5b813567ffffffffffffffff81111561241457600080fd5b8201601f8101841361242557600080fd5b6115b484823560208401612357565b6000806040838503121561244757600080fd5b6124508361228b565b91506020830135801515811461246557600080fd5b809150509250929050565b803560ff811681146122a257600080fd5b60008060006060848603121561249657600080fd5b83359250602084013591506124ad60408501612470565b90509250925092565b600080604083850312156124c957600080fd5b823591506124d960208401612470565b90509250929050565b600080600080608085870312156124f857600080fd5b6125018561228b565b935061250f6020860161228b565b925060408501359150606085013567ffffffffffffffff81111561253257600080fd5b8501601f8101871361254357600080fd5b61255287823560208401612357565b91505092959194509250565b6000806040838503121561257157600080fd5b61257a8361228b565b91506124d96020840161228b565b600181811c9082168061259c57607f821691505b6020821081036125d5577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561264c5761264c61260a565b500190565b600083516126638184602088016121e9565b8351908301906126778183602088016121e9565b01949350505050565b6000828210156126925761269261260a565b500390565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036126c8576126c861260a565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261270d5761270d6126cf565b500490565b600082612721576127216126cf565b500690565b60006001600160a01b038087168352808616602084015250836040830152608060608301526127586080830184612215565b9695505050505050565b60006020828403121561277457600080fd5b81516112658161219e565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea26469706673582212204e5bf81723224aeadc3cac491643522cf6bdbca91ea09fa848c3d9ed2713713e64736f6c634300080d0033
Deployed Bytecode
0x6080604052600436106101a15760003560e01c806370a08231116100e1578063a22cb4651161008a578063b88d4fde11610064578063b88d4fde14610468578063c87b56dd14610488578063e985e9c5146104a8578063f2fde38b146104f157600080fd5b8063a22cb46514610415578063afde90c214610435578063b21cdb8f1461045557600080fd5b8063938e3d7b116100bb578063938e3d7b146103cb57806395d89b41146103eb5780639f402f3b1461040057600080fd5b806370a0823114610378578063715018a6146103985780638da5cb5b146103ad57600080fd5b806323b872dd1161014e5780634f6ccce7116101285780634f6ccce71461030357806355f804b31461032357806357ea89b6146103435780636352211e1461035857600080fd5b806323b872dd146102a35780632f745c59146102c357806342842e0e146102e357600080fd5b8063095ea7b31161017f578063095ea7b31461023557806318160ddd146102575780631cdce9fe1461027657600080fd5b806301ffc9a7146101a657806306fdde03146101db578063081812fc146101fd575b600080fd5b3480156101b257600080fd5b506101c66101c13660046121cc565b610511565b60405190151581526020015b60405180910390f35b3480156101e757600080fd5b506101f061056d565b6040516101d2919061225f565b34801561020957600080fd5b5061021d610218366004612272565b6105ff565b6040516001600160a01b0390911681526020016101d2565b34801561024157600080fd5b506102556102503660046122a7565b6106aa565b005b34801561026357600080fd5b506008545b6040519081526020016101d2565b34801561028257600080fd5b506102686102913660046122d1565b60116020526000908152604090205481565b3480156102af57600080fd5b506102556102be3660046122ec565b6107db565b3480156102cf57600080fd5b506102686102de3660046122a7565b610862565b3480156102ef57600080fd5b506102556102fe3660046122ec565b61090a565b34801561030f57600080fd5b5061026861031e366004612272565b610925565b34801561032f57600080fd5b5061025561033e3660046123eb565b6109c9565b34801561034f57600080fd5b50610255610a2f565b34801561036457600080fd5b5061021d610373366004612272565b610ab5565b34801561038457600080fd5b506102686103933660046122d1565b610b40565b3480156103a457600080fd5b50610255610bda565b3480156103b957600080fd5b50600a546001600160a01b031661021d565b3480156103d757600080fd5b506102556103e63660046123eb565b610c40565b3480156103f757600080fd5b506101f0610ca3565b34801561040c57600080fd5b50610255610cb2565b34801561042157600080fd5b50610255610430366004612434565b610db2565b34801561044157600080fd5b506101c6610450366004612481565b610dc1565b6102556104633660046124b6565b610e2f565b34801561047457600080fd5b506102556104833660046124e2565b6110f5565b34801561049457600080fd5b506101f06104a3366004612272565b611183565b3480156104b457600080fd5b506101c66104c336600461255e565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b3480156104fd57600080fd5b5061025561050c3660046122d1565b61126c565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f780e9d6300000000000000000000000000000000000000000000000000000000148061056757506105678261134b565b92915050565b60606000805461057c90612588565b80601f01602080910402602001604051908101604052809291908181526020018280546105a890612588565b80156105f55780601f106105ca576101008083540402835291602001916105f5565b820191906000526020600020905b8154815290600101906020018083116105d857829003601f168201915b5050505050905090565b6000818152600260205260408120546001600160a01b031661068e5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e000000000000000000000000000000000000000060648201526084015b60405180910390fd5b506000908152600460205260409020546001600160a01b031690565b60006106b582610ab5565b9050806001600160a01b0316836001600160a01b03160361073e5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f72000000000000000000000000000000000000000000000000000000000000006064820152608401610685565b336001600160a01b038216148061075a575061075a81336104c3565b6107cc5760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610685565b6107d6838361142e565b505050565b6107e533826114b4565b6108575760405162461bcd60e51b815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f7665640000000000000000000000000000006064820152608401610685565b6107d68383836115bc565b600061086d83610b40565b82106108e15760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201527f74206f6620626f756e64730000000000000000000000000000000000000000006064820152608401610685565b506001600160a01b03919091166000908152600660209081526040808320938352929052205490565b6107d6838383604051806020016040528060008152506110f5565b600061093060085490565b82106109a45760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201527f7574206f6620626f756e647300000000000000000000000000000000000000006064820152608401610685565b600882815481106109b7576109b76125db565b90600052602060002001549050919050565b600a546001600160a01b03163314610a235760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610685565b610a2c816117ac565b50565b600a546001600160a01b03163314610a895760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610685565b60405133904780156108fc02916000818181858888f19350505050158015610a2c573d6000803e3d6000fd5b6000818152600260205260408120546001600160a01b0316806105675760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201527f656e7420746f6b656e00000000000000000000000000000000000000000000006064820152608401610685565b60006001600160a01b038216610bbe5760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a6560448201527f726f2061646472657373000000000000000000000000000000000000000000006064820152608401610685565b506001600160a01b031660009081526003602052604090205490565b600a546001600160a01b03163314610c345760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610685565b610c3e60006117bf565b565b600a546001600160a01b03163314610c9a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610685565b610a2c81611829565b60606001805461057c90612588565b600a546001600160a01b03163314610d0c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610685565b600d5460ff1615610d855760405162461bcd60e51b815260206004820152602360248201527f596f7527766520616c7265616479207374617274656420746865206d696e746960448201527f6e672e00000000000000000000000000000000000000000000000000000000006064820152608401610685565b600d80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b610dbd33838361183c565b5050565b6000600e548416600e54600f8460ff1681548110610de157610de16125db565b90600052602060002090602091828204019190069054906101000a900460ff1660ff1660108681548110610e1757610e176125db565b9060005260206000200154901c161490509392505050565b600d5460ff16610e815760405162461bcd60e51b815260206004820152601c60248201527f4d696e74696e6720686173206e6f742073746172746564207965742e000000006044820152606401610685565b6000610e8c60085490565b90506107d08110610f055760405162461bcd60e51b815260206004820152603660248201527f5765277265206f75742120537461792074756e656420666f72206d6f7265205260448201527f454d494c49412070726f64756374696f6e73207e2e6f000000000000000000006064820152608401610685565b33600090815260116020526040902054600211610f645760405162461bcd60e51b815260206004820152601d60248201527f596f75277665206d696e74656420656e6f75676820616c72656164792e0000006044820152606401610685565b33600090815260116020526040902054600103610fd7576702c68af0bb1400003414610fd25760405162461bcd60e51b815260206004820152601d60248201527f496e636f727265637420616d6f756e74206f66207765692073656e742e0000006044820152606401610685565b611025565b34156110255760405162461bcd60e51b815260206004820152601d60248201527f496e636f727265637420616d6f756e74206f66207765692073656e742e0000006044820152606401610685565b611030338484610dc1565b6110a25760405162461bcd60e51b815260206004820152603160248201527f4f6f707321204c6f6f6b73206c696b6520796f75277265206e6f7420636f6f6c60448201527f20656e6f75676820666f7220746869732e0000000000000000000000000000006064820152608401610685565b6110b6336110b1836001612639565b611928565b6110c5336110b1836002612639565b336000908152601160205260409020546110e0906001612639565b33600090815260116020526040902055505050565b6110ff33836114b4565b6111715760405162461bcd60e51b815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f7665640000000000000000000000000000006064820152608401610685565b61117d84848484611942565b50505050565b6000818152600260205260409020546060906001600160a01b03166112105760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201527f6e6578697374656e7420746f6b656e00000000000000000000000000000000006064820152608401610685565b600061121a6119cb565b9050600081511161123a5760405180602001604052806000815250611265565b80611244846119da565b604051602001611255929190612651565b6040516020818303038152906040525b9392505050565b600a546001600160a01b031633146112c65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610685565b6001600160a01b0381166113425760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610685565b610a2c816117bf565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd0000000000000000000000000000000000000000000000000000000014806113de57507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061056757507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610567565b600081815260046020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038416908117909155819061147b82610ab5565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000818152600260205260408120546001600160a01b031661153e5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e00000000000000000000000000000000000000006064820152608401610685565b600061154983610ab5565b9050806001600160a01b0316846001600160a01b031614806115845750836001600160a01b0316611579846105ff565b6001600160a01b0316145b806115b457506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b03166115cf82610ab5565b6001600160a01b03161461164b5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e65720000000000000000000000000000000000000000000000000000006064820152608401610685565b6001600160a01b0382166116c65760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610685565b6116d1838383611b0f565b6116dc60008261142e565b6001600160a01b0383166000908152600360205260408120805460019290611705908490612680565b90915550506001600160a01b0382166000908152600360205260408120805460019290611733908490612639565b909155505060008181526002602052604080822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b8051610dbd90600b906020840190612105565b600a80546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b8051610dbd90600c906020840190612105565b816001600160a01b0316836001600160a01b03160361189d5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610685565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b610dbd828260405180602001604052806000815250611bc7565b61194d8484846115bc565b61195984848484611c50565b61117d5760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610685565b6060600b805461057c90612588565b606081600003611a1d57505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b8115611a475780611a3181612697565b9150611a409050600a836126fe565b9150611a21565b60008167ffffffffffffffff811115611a6257611a62612328565b6040519080825280601f01601f191660200182016040528015611a8c576020820181803683370190505b5090505b84156115b457611aa1600183612680565b9150611aae600a86612712565b611ab9906030612639565b60f81b818381518110611ace57611ace6125db565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350611b08600a866126fe565b9450611a90565b6001600160a01b038316611b6a57611b6581600880546000838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b611b8d565b816001600160a01b0316836001600160a01b031614611b8d57611b8d8382611e0f565b6001600160a01b038216611ba4576107d681611eac565b826001600160a01b0316826001600160a01b0316146107d6576107d68282611f5b565b611bd18383611f9f565b611bde6000848484611c50565b6107d65760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610685565b60006001600160a01b0384163b15611e04576040517f150b7a020000000000000000000000000000000000000000000000000000000081526001600160a01b0385169063150b7a0290611cad903390899088908890600401612726565b6020604051808303816000875af1925050508015611d06575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252611d0391810190612762565b60015b611db9573d808015611d34576040519150601f19603f3d011682016040523d82523d6000602084013e611d39565b606091505b508051600003611db15760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610685565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a02000000000000000000000000000000000000000000000000000000001490506115b4565b506001949350505050565b60006001611e1c84610b40565b611e269190612680565b600083815260076020526040902054909150808214611e79576001600160a01b03841660009081526006602090815260408083208584528252808320548484528184208190558352600790915290208190555b5060009182526007602090815260408084208490556001600160a01b039094168352600681528383209183525290812055565b600854600090611ebe90600190612680565b60008381526009602052604081205460088054939450909284908110611ee657611ee66125db565b906000526020600020015490508060088381548110611f0757611f076125db565b6000918252602080832090910192909255828152600990915260408082208490558582528120556008805480611f3f57611f3f61277f565b6001900381819060005260206000200160009055905550505050565b6000611f6683610b40565b6001600160a01b039093166000908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b6001600160a01b038216611ff55760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610685565b6000818152600260205260409020546001600160a01b03161561205a5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610685565b61206660008383611b0f565b6001600160a01b038216600090815260036020526040812080546001929061208f908490612639565b909155505060008181526002602052604080822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b82805461211190612588565b90600052602060002090601f0160209004810192826121335760008555612179565b82601f1061214c57805160ff1916838001178555612179565b82800160010185558215612179579182015b8281111561217957825182559160200191906001019061215e565b50612185929150612189565b5090565b5b80821115612185576000815560010161218a565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114610a2c57600080fd5b6000602082840312156121de57600080fd5b81356112658161219e565b60005b838110156122045781810151838201526020016121ec565b8381111561117d5750506000910152565b6000815180845261222d8160208601602086016121e9565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006112656020830184612215565b60006020828403121561228457600080fd5b5035919050565b80356001600160a01b03811681146122a257600080fd5b919050565b600080604083850312156122ba57600080fd5b6122c38361228b565b946020939093013593505050565b6000602082840312156122e357600080fd5b6112658261228b565b60008060006060848603121561230157600080fd5b61230a8461228b565b92506123186020850161228b565b9150604084013590509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600067ffffffffffffffff8084111561237257612372612328565b604051601f85017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019082821181831017156123b8576123b8612328565b816040528093508581528686860111156123d157600080fd5b858560208301376000602087830101525050509392505050565b6000602082840312156123fd57600080fd5b813567ffffffffffffffff81111561241457600080fd5b8201601f8101841361242557600080fd5b6115b484823560208401612357565b6000806040838503121561244757600080fd5b6124508361228b565b91506020830135801515811461246557600080fd5b809150509250929050565b803560ff811681146122a257600080fd5b60008060006060848603121561249657600080fd5b83359250602084013591506124ad60408501612470565b90509250925092565b600080604083850312156124c957600080fd5b823591506124d960208401612470565b90509250929050565b600080600080608085870312156124f857600080fd5b6125018561228b565b935061250f6020860161228b565b925060408501359150606085013567ffffffffffffffff81111561253257600080fd5b8501601f8101871361254357600080fd5b61255287823560208401612357565b91505092959194509250565b6000806040838503121561257157600080fd5b61257a8361228b565b91506124d96020840161228b565b600181811c9082168061259c57607f821691505b6020821081036125d5577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561264c5761264c61260a565b500190565b600083516126638184602088016121e9565b8351908301906126778183602088016121e9565b01949350505050565b6000828210156126925761269261260a565b500390565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036126c8576126c861260a565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261270d5761270d6126cf565b500490565b600082612721576127216126cf565b500690565b60006001600160a01b038087168352808616602084015250836040830152608060608301526127586080830184612215565b9695505050505050565b60006020828403121561277457600080fd5b81516112658161219e565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea26469706673582212204e5bf81723224aeadc3cac491643522cf6bdbca91ea09fa848c3d9ed2713713e64736f6c634300080d0033
Deployed Bytecode Sourcemap
44534:56868:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38216:224;;;;;;;;;;-1:-1:-1;38216:224:0;;;;;:::i;:::-;;:::i;:::-;;;611:14:1;;604:22;586:41;;574:2;559:18;38216:224:0;;;;;;;;24184:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;25743:221::-;;;;;;;;;;-1:-1:-1;25743:221:0;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;1797:55:1;;;1779:74;;1767:2;1752:18;25743:221:0;1633:226:1;25266:411:0;;;;;;;;;;-1:-1:-1;25266:411:0;;;;;:::i;:::-;;:::i;:::-;;38856:113;;;;;;;;;;-1:-1:-1;38944:10:0;:17;38856:113;;;2470:25:1;;;2458:2;2443:18;38856:113:0;2324:177:1;100381:48:0;;;;;;;;;;-1:-1:-1;100381:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;26493:339;;;;;;;;;;-1:-1:-1;26493:339:0;;;;;:::i;:::-;;:::i;38524:256::-;;;;;;;;;;-1:-1:-1;38524:256:0;;;;;:::i;:::-;;:::i;26903:185::-;;;;;;;;;;-1:-1:-1;26903:185:0;;;;;:::i;:::-;;:::i;39046:233::-;;;;;;;;;;-1:-1:-1;39046:233:0;;;;;:::i;:::-;;:::i;44816:90::-;;;;;;;;;;-1:-1:-1;44816:90:0;;;;;:::i;:::-;;:::i;100141:104::-;;;;;;;;;;;;;:::i;23878:239::-;;;;;;;;;;-1:-1:-1;23878:239:0;;;;;:::i;:::-;;:::i;23608:208::-;;;;;;;;;;-1:-1:-1;23608:208:0;;;;;:::i;:::-;;:::i;2507:103::-;;;;;;;;;;;;;:::i;1856:87::-;;;;;;;;;;-1:-1:-1;1929:6:0;;-1:-1:-1;;;;;1929:6:0;1856:87;;45157:106;;;;;;;;;;-1:-1:-1;45157:106:0;;;;;:::i;:::-;;:::i;24353:104::-;;;;;;;;;;;;;:::i;100250:125::-;;;;;;;;;;;;;:::i;26036:155::-;;;;;;;;;;-1:-1:-1;26036:155:0;;;;;:::i;:::-;;:::i;99865:158::-;;;;;;;;;;-1:-1:-1;99865:158:0;;;;;:::i;:::-;;:::i;100504:825::-;;;;;;:::i;:::-;;:::i;27159:328::-;;;;;;;;;;-1:-1:-1;27159:328:0;;;;;:::i;:::-;;:::i;24528:334::-;;;;;;;;;;-1:-1:-1;24528:334:0;;;;;:::i;:::-;;:::i;26262:164::-;;;;;;;;;;-1:-1:-1;26262:164:0;;;;;:::i;:::-;-1:-1:-1;;;;;26383:25:0;;;26359:4;26383:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;26262:164;2765:201;;;;;;;;;;-1:-1:-1;2765:201:0;;;;;:::i;:::-;;:::i;38216:224::-;38318:4;38342:50;;;38357:35;38342:50;;:90;;;38396:36;38420:11;38396:23;:36::i;:::-;38335:97;38216:224;-1:-1:-1;;38216:224:0:o;24184:100::-;24238:13;24271:5;24264:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24184:100;:::o;25743:221::-;25819:7;29086:16;;;:7;:16;;;;;;-1:-1:-1;;;;;29086:16:0;25839:73;;;;-1:-1:-1;;;25839:73:0;;7043:2:1;25839:73:0;;;7025:21:1;7082:2;7062:18;;;7055:30;7121:34;7101:18;;;7094:62;7192:14;7172:18;;;7165:42;7224:19;;25839:73:0;;;;;;;;;-1:-1:-1;25932:24:0;;;;:15;:24;;;;;;-1:-1:-1;;;;;25932:24:0;;25743:221::o;25266:411::-;25347:13;25363:23;25378:7;25363:14;:23::i;:::-;25347:39;;25411:5;-1:-1:-1;;;;;25405:11:0;:2;-1:-1:-1;;;;;25405:11:0;;25397:57;;;;-1:-1:-1;;;25397:57:0;;7456:2:1;25397:57:0;;;7438:21:1;7495:2;7475:18;;;7468:30;7534:34;7514:18;;;7507:62;7605:3;7585:18;;;7578:31;7626:19;;25397:57:0;7254:397:1;25397:57:0;743:10;-1:-1:-1;;;;;25489:21:0;;;;:62;;-1:-1:-1;25514:37:0;25531:5;743:10;26262:164;:::i;25514:37::-;25467:168;;;;-1:-1:-1;;;25467:168:0;;7858:2:1;25467:168:0;;;7840:21:1;7897:2;7877:18;;;7870:30;7936:34;7916:18;;;7909:62;8007:26;7987:18;;;7980:54;8051:19;;25467:168:0;7656:420:1;25467:168:0;25648:21;25657:2;25661:7;25648:8;:21::i;:::-;25336:341;25266:411;;:::o;26493:339::-;26688:41;743:10;26721:7;26688:18;:41::i;:::-;26680:103;;;;-1:-1:-1;;;26680:103:0;;8283:2:1;26680:103:0;;;8265:21:1;8322:2;8302:18;;;8295:30;8361:34;8341:18;;;8334:62;8432:19;8412:18;;;8405:47;8469:19;;26680:103:0;8081:413:1;26680:103:0;26796:28;26806:4;26812:2;26816:7;26796:9;:28::i;38524:256::-;38621:7;38657:23;38674:5;38657:16;:23::i;:::-;38649:5;:31;38641:87;;;;-1:-1:-1;;;38641:87:0;;8701:2:1;38641:87:0;;;8683:21:1;8740:2;8720:18;;;8713:30;8779:34;8759:18;;;8752:62;8850:13;8830:18;;;8823:41;8881:19;;38641:87:0;8499:407:1;38641:87:0;-1:-1:-1;;;;;;38746:19:0;;;;;;;;:12;:19;;;;;;;;:26;;;;;;;;;38524:256::o;26903:185::-;27041:39;27058:4;27064:2;27068:7;27041:39;;;;;;;;;;;;:16;:39::i;39046:233::-;39121:7;39157:30;38944:10;:17;;38856:113;39157:30;39149:5;:38;39141:95;;;;-1:-1:-1;;;39141:95:0;;9113:2:1;39141:95:0;;;9095:21:1;9152:2;9132:18;;;9125:30;9191:34;9171:18;;;9164:62;9262:14;9242:18;;;9235:42;9294:19;;39141:95:0;8911:408:1;39141:95:0;39254:10;39265:5;39254:17;;;;;;;;:::i;:::-;;;;;;;;;39247:24;;39046:233;;;:::o;44816:90::-;1929:6;;-1:-1:-1;;;;;1929:6:0;743:10;2076:23;2068:68;;;;-1:-1:-1;;;2068:68:0;;9715:2:1;2068:68:0;;;9697:21:1;;;9734:18;;;9727:30;9793:34;9773:18;;;9766:62;9845:18;;2068:68:0;9513:356:1;2068:68:0;44881:20:::1;44893:7;44881:11;:20::i;:::-;44816:90:::0;:::o;100141:104::-;1929:6;;-1:-1:-1;;;;;1929:6:0;743:10;2076:23;2068:68;;;;-1:-1:-1;;;2068:68:0;;9715:2:1;2068:68:0;;;9697:21:1;;;9734:18;;;9727:30;9793:34;9773:18;;;9766:62;9845:18;;2068:68:0;9513:356:1;2068:68:0;100183:57:::1;::::0;100192:10:::1;::::0;100215:23:::1;100183:57:::0;::::1;;;::::0;::::1;::::0;;;100215:23;100192:10;100183:57;::::1;;;;;;;;;;;;;::::0;::::1;;;;23878:239:::0;23950:7;23986:16;;;:7;:16;;;;;;-1:-1:-1;;;;;23986:16:0;;24013:73;;;;-1:-1:-1;;;24013:73:0;;10076:2:1;24013:73:0;;;10058:21:1;10115:2;10095:18;;;10088:30;10154:34;10134:18;;;10127:62;10225:11;10205:18;;;10198:39;10254:19;;24013:73:0;9874:405:1;23608:208:0;23680:7;-1:-1:-1;;;;;23708:19:0;;23700:74;;;;-1:-1:-1;;;23700:74:0;;10486:2:1;23700:74:0;;;10468:21:1;10525:2;10505:18;;;10498:30;10564:34;10544:18;;;10537:62;10635:12;10615:18;;;10608:40;10665:19;;23700:74:0;10284:406:1;23700:74:0;-1:-1:-1;;;;;;23792:16:0;;;;;:9;:16;;;;;;;23608:208::o;2507:103::-;1929:6;;-1:-1:-1;;;;;1929:6:0;743:10;2076:23;2068:68;;;;-1:-1:-1;;;2068:68:0;;9715:2:1;2068:68:0;;;9697:21:1;;;9734:18;;;9727:30;9793:34;9773:18;;;9766:62;9845:18;;2068:68:0;9513:356:1;2068:68:0;2572:30:::1;2599:1;2572:18;:30::i;:::-;2507:103::o:0;45157:106::-;1929:6;;-1:-1:-1;;;;;1929:6:0;743:10;2076:23;2068:68;;;;-1:-1:-1;;;2068:68:0;;9715:2:1;2068:68:0;;;9697:21:1;;;9734:18;;;9727:30;9793:34;9773:18;;;9766:62;9845:18;;2068:68:0;9513:356:1;2068:68:0;45230:28:::1;45246:11;45230:15;:28::i;24353:104::-:0;24409:13;24442:7;24435:14;;;;;:::i;100250:125::-;1929:6;;-1:-1:-1;;;;;1929:6:0;743:10;2076:23;2068:68;;;;-1:-1:-1;;;2068:68:0;;9715:2:1;2068:68:0;;;9697:21:1;;;9734:18;;;9727:30;9793:34;9773:18;;;9766:62;9845:18;;2068:68:0;9513:356:1;2068:68:0;100303:7:::1;::::0;::::1;;100302:8;100293:58;;;::::0;-1:-1:-1;;;100293:58:0;;10897:2:1;100293:58:0::1;::::0;::::1;10879:21:1::0;10936:2;10916:18;;;10909:30;10975:34;10955:18;;;10948:62;11046:5;11026:18;;;11019:33;11069:19;;100293:58:0::1;10695:399:1::0;100293:58:0::1;100356:7;:14:::0;;;::::1;100366:4;100356:14;::::0;;100250:125::o;26036:155::-;26131:52;743:10;26164:8;26174;26131:18;:52::i;:::-;26036:155;;:::o;99865:158::-;99944:4;100012;;100005;:11;99993:4;;99980:5;99986:1;99980:8;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;99967:21;;:6;99974:1;99967:9;;;;;;;;:::i;:::-;;;;;;;;;:21;;99965:32;99963:55;99956:62;;99865:158;;;;;:::o;100504:825::-;100573:7;;;;100564:50;;;;-1:-1:-1;;;100564:50:0;;11301:2:1;100564:50:0;;;11283:21:1;11340:2;11320:18;;;11313:30;11379;11359:18;;;11352:58;11427:18;;100564:50:0;11099:352:1;100564:50:0;100619:9;100631:13;38944:10;:17;;38856:113;100631:13;100619:25;;100494:4;100658:1;:10;100649:79;;;;-1:-1:-1;;;100649:79:0;;11658:2:1;100649:79:0;;;11640:21:1;11697:2;11677:18;;;11670:30;11736:34;11716:18;;;11709:62;11807:24;11787:18;;;11780:52;11849:19;;100649:79:0;11456:418:1;100649:79:0;100755:10;100742:25;;;;:11;:25;;;;;;100770:1;-1:-1:-1;100733:73:0;;;;-1:-1:-1;;;100733:73:0;;12081:2:1;100733:73:0;;;12063:21:1;12120:2;12100:18;;;12093:30;12159:31;12139:18;;;12132:59;12208:18;;100733:73:0;11879:353:1;100733:73:0;100829:10;100816:25;;;;:11;:25;;;;;;100845:1;100816:30;100811:188;;100460:4;100864:9;:18;100855:62;;;;-1:-1:-1;;;100855:62:0;;12439:2:1;100855:62:0;;;12421:21:1;12478:2;12458:18;;;12451:30;12517:31;12497:18;;;12490:59;12566:18;;100855:62:0;12237:353:1;100855:62:0;100811:188;;;100944:9;:14;100935:58;;;;-1:-1:-1;;;100935:58:0;;12439:2:1;100935:58:0;;;12421:21:1;12478:2;12458:18;;;12451:30;12517:31;12497:18;;;12490:59;12566:18;;100935:58:0;12237:353:1;100935:58:0;101012:53;101043:10;101059:1;101062;101012:11;:53::i;:::-;101003:117;;;;-1:-1:-1;;;101003:117:0;;12797:2:1;101003:117:0;;;12779:21:1;12836:2;12816:18;;;12809:30;12875:34;12855:18;;;12848:62;12946:19;12926:18;;;12919:47;12983:19;;101003:117:0;12595:413:1;101003:117:0;101197:30;101208:10;101220:5;:1;101224;101220:5;:::i;:::-;101197:9;:30::i;:::-;101232;101243:10;101255:5;:1;101259;101255:5;:::i;101232:30::-;101308:10;101295:25;;;;:11;:25;;;;;;:29;;101323:1;101295:29;:::i;:::-;101280:10;101267:25;;;;:11;:25;;;;;:57;-1:-1:-1;;;100504:825:0:o;27159:328::-;27334:41;743:10;27367:7;27334:18;:41::i;:::-;27326:103;;;;-1:-1:-1;;;27326:103:0;;8283:2:1;27326:103:0;;;8265:21:1;8322:2;8302:18;;;8295:30;8361:34;8341:18;;;8334:62;8432:19;8412:18;;;8405:47;8469:19;;27326:103:0;8081:413:1;27326:103:0;27440:39;27454:4;27460:2;27464:7;27473:5;27440:13;:39::i;:::-;27159:328;;;;:::o;24528:334::-;29062:4;29086:16;;;:7;:16;;;;;;24601:13;;-1:-1:-1;;;;;29086:16:0;24627:76;;;;-1:-1:-1;;;24627:76:0;;13537:2:1;24627:76:0;;;13519:21:1;13576:2;13556:18;;;13549:30;13615:34;13595:18;;;13588:62;13686:17;13666:18;;;13659:45;13721:19;;24627:76:0;13335:411:1;24627:76:0;24716:21;24740:10;:8;:10::i;:::-;24716:34;;24792:1;24774:7;24768:21;:25;:86;;;;;;;;;;;;;;;;;24820:7;24829:18;:7;:16;:18::i;:::-;24803:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;24768:86;24761:93;24528:334;-1:-1:-1;;;24528:334:0:o;2765:201::-;1929:6;;-1:-1:-1;;;;;1929:6:0;743:10;2076:23;2068:68;;;;-1:-1:-1;;;2068:68:0;;9715:2:1;2068:68:0;;;9697:21:1;;;9734:18;;;9727:30;9793:34;9773:18;;;9766:62;9845:18;;2068:68:0;9513:356:1;2068:68:0;-1:-1:-1;;;;;2854:22:0;::::1;2846:73;;;::::0;-1:-1:-1;;;2846:73:0;;14428:2:1;2846:73:0::1;::::0;::::1;14410:21:1::0;14467:2;14447:18;;;14440:30;14506:34;14486:18;;;14479:62;14577:8;14557:18;;;14550:36;14603:19;;2846:73:0::1;14226:402:1::0;2846:73:0::1;2930:28;2949:8;2930:18;:28::i;23239:305::-:0;23341:4;23378:40;;;23393:25;23378:40;;:105;;-1:-1:-1;23435:48:0;;;23450:33;23435:48;23378:105;:158;;;-1:-1:-1;21907:25:0;21892:40;;;;23500:36;21783:157;33143:174;33218:24;;;;:15;:24;;;;;:29;;;;-1:-1:-1;;;;;33218:29:0;;;;;;;;:24;;33272:23;33218:24;33272:14;:23::i;:::-;-1:-1:-1;;;;;33263:46:0;;;;;;;;;;;33143:174;;:::o;29291:348::-;29384:4;29086:16;;;:7;:16;;;;;;-1:-1:-1;;;;;29086:16:0;29401:73;;;;-1:-1:-1;;;29401:73:0;;14835:2:1;29401:73:0;;;14817:21:1;14874:2;14854:18;;;14847:30;14913:34;14893:18;;;14886:62;14984:14;14964:18;;;14957:42;15016:19;;29401:73:0;14633:408:1;29401:73:0;29485:13;29501:23;29516:7;29501:14;:23::i;:::-;29485:39;;29554:5;-1:-1:-1;;;;;29543:16:0;:7;-1:-1:-1;;;;;29543:16:0;;:51;;;;29587:7;-1:-1:-1;;;;;29563:31:0;:20;29575:7;29563:11;:20::i;:::-;-1:-1:-1;;;;;29563:31:0;;29543:51;:87;;;-1:-1:-1;;;;;;26383:25:0;;;26359:4;26383:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;29598:32;29535:96;29291:348;-1:-1:-1;;;;29291:348:0:o;32400:625::-;32559:4;-1:-1:-1;;;;;32532:31:0;:23;32547:7;32532:14;:23::i;:::-;-1:-1:-1;;;;;32532:31:0;;32524:81;;;;-1:-1:-1;;;32524:81:0;;15248:2:1;32524:81:0;;;15230:21:1;15287:2;15267:18;;;15260:30;15326:34;15306:18;;;15299:62;15397:7;15377:18;;;15370:35;15422:19;;32524:81:0;15046:401:1;32524:81:0;-1:-1:-1;;;;;32624:16:0;;32616:65;;;;-1:-1:-1;;;32616:65:0;;15654:2:1;32616:65:0;;;15636:21:1;15693:2;15673:18;;;15666:30;15732:34;15712:18;;;15705:62;15803:6;15783:18;;;15776:34;15827:19;;32616:65:0;15452:400:1;32616:65:0;32694:39;32715:4;32721:2;32725:7;32694:20;:39::i;:::-;32798:29;32815:1;32819:7;32798:8;:29::i;:::-;-1:-1:-1;;;;;32840:15:0;;;;;;:9;:15;;;;;:20;;32859:1;;32840:15;:20;;32859:1;;32840:20;:::i;:::-;;;;-1:-1:-1;;;;;;;32871:13:0;;;;;;:9;:13;;;;;:18;;32888:1;;32871:13;:18;;32888:1;;32871:18;:::i;:::-;;;;-1:-1:-1;;32900:16:0;;;;:7;:16;;;;;;:21;;;;-1:-1:-1;;;;;32900:21:0;;;;;;;;;32939:27;;32900:16;;32939:27;;;;;;;25336:341;25266:411;;:::o;44721:92::-;44788:20;;;;:9;;:20;;;;;:::i;3126:191::-;3219:6;;;-1:-1:-1;;;;;3236:17:0;;;;;;;;;;;3269:40;;3219:6;;;3236:17;3219:6;;3269:40;;3200:16;;3269:40;3189:128;3126:191;:::o;45046:108::-;45121:28;;;;:13;;:28;;;;;:::i;33459:315::-;33614:8;-1:-1:-1;;;;;33605:17:0;:5;-1:-1:-1;;;;;33605:17:0;;33597:55;;;;-1:-1:-1;;;33597:55:0;;16189:2:1;33597:55:0;;;16171:21:1;16228:2;16208:18;;;16201:30;16267:27;16247:18;;;16240:55;16312:18;;33597:55:0;15987:349:1;33597:55:0;-1:-1:-1;;;;;33663:25:0;;;;;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;:46;;;;;;;;;;;;;33725:41;;586::1;;;33725::0;;559:18:1;33725:41:0;;;;;;;33459:315;;;:::o;29981:110::-;30057:26;30067:2;30071:7;30057:26;;;;;;;;;;;;:9;:26::i;28369:315::-;28526:28;28536:4;28542:2;28546:7;28526:9;:28::i;:::-;28573:48;28596:4;28602:2;28606:7;28615:5;28573:22;:48::i;:::-;28565:111;;;;-1:-1:-1;;;28565:111:0;;16543:2:1;28565:111:0;;;16525:21:1;16582:2;16562:18;;;16555:30;16621:34;16601:18;;;16594:62;16692:20;16672:18;;;16665:48;16730:19;;28565:111:0;16341:414:1;44617:101:0;44677:13;44704:9;44697:16;;;;;:::i;3609:723::-;3665:13;3886:5;3895:1;3886:10;3882:53;;-1:-1:-1;;3913:10:0;;;;;;;;;;;;;;;;;;3609:723::o;3882:53::-;3960:5;3945:12;4001:78;4008:9;;4001:78;;4034:8;;;;:::i;:::-;;-1:-1:-1;4057:10:0;;-1:-1:-1;4065:2:0;4057:10;;:::i;:::-;;;4001:78;;;4089:19;4121:6;4111:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4111:17:0;;4089:39;;4139:154;4146:10;;4139:154;;4173:11;4183:1;4173:11;;:::i;:::-;;-1:-1:-1;4242:10:0;4250:2;4242:5;:10;:::i;:::-;4229:24;;:2;:24;:::i;:::-;4216:39;;4199:6;4206;4199:14;;;;;;;;:::i;:::-;;;;:56;;;;;;;;;;-1:-1:-1;4270:11:0;4279:2;4270:11;;:::i;:::-;;;4139:154;;39892:589;-1:-1:-1;;;;;40098:18:0;;40094:187;;40133:40;40165:7;41308:10;:17;;41281:24;;;;:15;:24;;;;;:44;;;41336:24;;;;;;;;;;;;41204:164;40133:40;40094:187;;;40203:2;-1:-1:-1;;;;;40195:10:0;:4;-1:-1:-1;;;;;40195:10:0;;40191:90;;40222:47;40255:4;40261:7;40222:32;:47::i;:::-;-1:-1:-1;;;;;40295:16:0;;40291:183;;40328:45;40365:7;40328:36;:45::i;40291:183::-;40401:4;-1:-1:-1;;;;;40395:10:0;:2;-1:-1:-1;;;;;40395:10:0;;40391:83;;40422:40;40450:2;40454:7;40422:27;:40::i;30318:321::-;30448:18;30454:2;30458:7;30448:5;:18::i;:::-;30499:54;30530:1;30534:2;30538:7;30547:5;30499:22;:54::i;:::-;30477:154;;;;-1:-1:-1;;;30477:154:0;;16543:2:1;30477:154:0;;;16525:21:1;16582:2;16562:18;;;16555:30;16621:34;16601:18;;;16594:62;16692:20;16672:18;;;16665:48;16730:19;;30477:154:0;16341:414:1;34339:799:0;34494:4;-1:-1:-1;;;;;34515:13:0;;14038:19;:23;34511:620;;34551:72;;;;;-1:-1:-1;;;;;34551:36:0;;;;;:72;;743:10;;34602:4;;34608:7;;34617:5;;34551:72;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;34551:72:0;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;34547:529;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34793:6;:13;34810:1;34793:18;34789:272;;34836:60;;-1:-1:-1;;;34836:60:0;;16543:2:1;34836:60:0;;;16525:21:1;16582:2;16562:18;;;16555:30;16621:34;16601:18;;;16594:62;16692:20;16672:18;;;16665:48;16730:19;;34836:60:0;16341:414:1;34789:272:0;35011:6;35005:13;34996:6;34992:2;34988:15;34981:38;34547:529;34674:51;;34684:41;34674:51;;-1:-1:-1;34667:58:0;;34511:620;-1:-1:-1;35115:4:0;34339:799;;;;;;:::o;41995:988::-;42261:22;42311:1;42286:22;42303:4;42286:16;:22::i;:::-;:26;;;;:::i;:::-;42323:18;42344:26;;;:17;:26;;;;;;42261:51;;-1:-1:-1;42477:28:0;;;42473:328;;-1:-1:-1;;;;;42544:18:0;;42522:19;42544:18;;;:12;:18;;;;;;;;:34;;;;;;;;;42595:30;;;;;;:44;;;42712:30;;:17;:30;;;;;:43;;;42473:328;-1:-1:-1;42897:26:0;;;;:17;:26;;;;;;;;42890:33;;;-1:-1:-1;;;;;42941:18:0;;;;;:12;:18;;;;;:34;;;;;;;42934:41;41995:988::o;43278:1079::-;43556:10;:17;43531:22;;43556:21;;43576:1;;43556:21;:::i;:::-;43588:18;43609:24;;;:15;:24;;;;;;43982:10;:26;;43531:46;;-1:-1:-1;43609:24:0;;43531:46;;43982:26;;;;;;:::i;:::-;;;;;;;;;43960:48;;44046:11;44021:10;44032;44021:22;;;;;;;;:::i;:::-;;;;;;;;;;;;:36;;;;44126:28;;;:15;:28;;;;;;;:41;;;44298:24;;;;;44291:31;44333:10;:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;43349:1008;;;43278:1079;:::o;40782:221::-;40867:14;40884:20;40901:2;40884:16;:20::i;:::-;-1:-1:-1;;;;;40915:16:0;;;;;;;:12;:16;;;;;;;;:24;;;;;;;;:34;;;40960:26;;;:17;:26;;;;;;:35;;;;-1:-1:-1;40782:221:0:o;30975:439::-;-1:-1:-1;;;;;31055:16:0;;31047:61;;;;-1:-1:-1;;;31047:61:0;;18553:2:1;31047:61:0;;;18535:21:1;;;18572:18;;;18565:30;18631:34;18611:18;;;18604:62;18683:18;;31047:61:0;18351:356:1;31047:61:0;29062:4;29086:16;;;:7;:16;;;;;;-1:-1:-1;;;;;29086:16:0;:30;31119:58;;;;-1:-1:-1;;;31119:58:0;;18914:2:1;31119:58:0;;;18896:21:1;18953:2;18933:18;;;18926:30;18992;18972:18;;;18965:58;19040:18;;31119:58:0;18712:352:1;31119:58:0;31190:45;31219:1;31223:2;31227:7;31190:20;:45::i;:::-;-1:-1:-1;;;;;31248:13:0;;;;;;:9;:13;;;;;:18;;31265:1;;31248:13;:18;;31265:1;;31248:18;:::i;:::-;;;;-1:-1:-1;;31277:16:0;;;;:7;:16;;;;;;:21;;;;-1:-1:-1;;;;;31277:21:0;;;;;;;;31316:33;;31277:16;;;31316:33;;31277:16;;31316:33;26036:155;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:177:1;99:66;92:5;88:78;81:5;78:89;68:117;;181:1;178;171:12;196:245;254:6;307:2;295:9;286:7;282:23;278:32;275:52;;;323:1;320;313:12;275:52;362:9;349:23;381:30;405:5;381:30;:::i;638:258::-;710:1;720:113;734:6;731:1;728:13;720:113;;;810:11;;;804:18;791:11;;;784:39;756:2;749:10;720:113;;;851:6;848:1;845:13;842:48;;;-1:-1:-1;;886:1:1;868:16;;861:27;638:258::o;901:317::-;943:3;981:5;975:12;1008:6;1003:3;996:19;1024:63;1080:6;1073:4;1068:3;1064:14;1057:4;1050:5;1046:16;1024:63;:::i;:::-;1132:2;1120:15;1137:66;1116:88;1107:98;;;;1207:4;1103:109;;901:317;-1:-1:-1;;901:317:1:o;1223:220::-;1372:2;1361:9;1354:21;1335:4;1392:45;1433:2;1422:9;1418:18;1410:6;1392:45;:::i;1448:180::-;1507:6;1560:2;1548:9;1539:7;1535:23;1531:32;1528:52;;;1576:1;1573;1566:12;1528:52;-1:-1:-1;1599:23:1;;1448:180;-1:-1:-1;1448:180:1:o;1864:196::-;1932:20;;-1:-1:-1;;;;;1981:54:1;;1971:65;;1961:93;;2050:1;2047;2040:12;1961:93;1864:196;;;:::o;2065:254::-;2133:6;2141;2194:2;2182:9;2173:7;2169:23;2165:32;2162:52;;;2210:1;2207;2200:12;2162:52;2233:29;2252:9;2233:29;:::i;:::-;2223:39;2309:2;2294:18;;;;2281:32;;-1:-1:-1;;;2065:254:1:o;2506:186::-;2565:6;2618:2;2606:9;2597:7;2593:23;2589:32;2586:52;;;2634:1;2631;2624:12;2586:52;2657:29;2676:9;2657:29;:::i;2697:328::-;2774:6;2782;2790;2843:2;2831:9;2822:7;2818:23;2814:32;2811:52;;;2859:1;2856;2849:12;2811:52;2882:29;2901:9;2882:29;:::i;:::-;2872:39;;2930:38;2964:2;2953:9;2949:18;2930:38;:::i;:::-;2920:48;;3015:2;3004:9;3000:18;2987:32;2977:42;;2697:328;;;;;:::o;3030:184::-;3082:77;3079:1;3072:88;3179:4;3176:1;3169:15;3203:4;3200:1;3193:15;3219:691;3284:5;3314:18;3355:2;3347:6;3344:14;3341:40;;;3361:18;;:::i;:::-;3495:2;3489:9;3561:2;3549:15;;3400:66;3545:24;;;3571:2;3541:33;3537:42;3525:55;;;3595:18;;;3615:22;;;3592:46;3589:72;;;3641:18;;:::i;:::-;3681:10;3677:2;3670:22;3710:6;3701:15;;3740:6;3732;3725:22;3780:3;3771:6;3766:3;3762:16;3759:25;3756:45;;;3797:1;3794;3787:12;3756:45;3847:6;3842:3;3835:4;3827:6;3823:17;3810:44;3902:1;3895:4;3886:6;3878;3874:19;3870:30;3863:41;;;;3219:691;;;;;:::o;3915:451::-;3984:6;4037:2;4025:9;4016:7;4012:23;4008:32;4005:52;;;4053:1;4050;4043:12;4005:52;4093:9;4080:23;4126:18;4118:6;4115:30;4112:50;;;4158:1;4155;4148:12;4112:50;4181:22;;4234:4;4226:13;;4222:27;-1:-1:-1;4212:55:1;;4263:1;4260;4253:12;4212:55;4286:74;4352:7;4347:2;4334:16;4329:2;4325;4321:11;4286:74;:::i;4371:347::-;4436:6;4444;4497:2;4485:9;4476:7;4472:23;4468:32;4465:52;;;4513:1;4510;4503:12;4465:52;4536:29;4555:9;4536:29;:::i;:::-;4526:39;;4615:2;4604:9;4600:18;4587:32;4662:5;4655:13;4648:21;4641:5;4638:32;4628:60;;4684:1;4681;4674:12;4628:60;4707:5;4697:15;;;4371:347;;;;;:::o;4723:156::-;4789:20;;4849:4;4838:16;;4828:27;;4818:55;;4869:1;4866;4859:12;4884:318;4959:6;4967;4975;5028:2;5016:9;5007:7;5003:23;4999:32;4996:52;;;5044:1;5041;5034:12;4996:52;5080:9;5067:23;5057:33;;5137:2;5126:9;5122:18;5109:32;5099:42;;5160:36;5192:2;5181:9;5177:18;5160:36;:::i;:::-;5150:46;;4884:318;;;;;:::o;5207:250::-;5273:6;5281;5334:2;5322:9;5313:7;5309:23;5305:32;5302:52;;;5350:1;5347;5340:12;5302:52;5386:9;5373:23;5363:33;;5415:36;5447:2;5436:9;5432:18;5415:36;:::i;:::-;5405:46;;5207:250;;;;;:::o;5462:667::-;5557:6;5565;5573;5581;5634:3;5622:9;5613:7;5609:23;5605:33;5602:53;;;5651:1;5648;5641:12;5602:53;5674:29;5693:9;5674:29;:::i;:::-;5664:39;;5722:38;5756:2;5745:9;5741:18;5722:38;:::i;:::-;5712:48;;5807:2;5796:9;5792:18;5779:32;5769:42;;5862:2;5851:9;5847:18;5834:32;5889:18;5881:6;5878:30;5875:50;;;5921:1;5918;5911:12;5875:50;5944:22;;5997:4;5989:13;;5985:27;-1:-1:-1;5975:55:1;;6026:1;6023;6016:12;5975:55;6049:74;6115:7;6110:2;6097:16;6092:2;6088;6084:11;6049:74;:::i;:::-;6039:84;;;5462:667;;;;;;;:::o;6134:260::-;6202:6;6210;6263:2;6251:9;6242:7;6238:23;6234:32;6231:52;;;6279:1;6276;6269:12;6231:52;6302:29;6321:9;6302:29;:::i;:::-;6292:39;;6350:38;6384:2;6373:9;6369:18;6350:38;:::i;6399:437::-;6478:1;6474:12;;;;6521;;;6542:61;;6596:4;6588:6;6584:17;6574:27;;6542:61;6649:2;6641:6;6638:14;6618:18;6615:38;6612:218;;6686:77;6683:1;6676:88;6787:4;6784:1;6777:15;6815:4;6812:1;6805:15;6612:218;;6399:437;;;:::o;9324:184::-;9376:77;9373:1;9366:88;9473:4;9470:1;9463:15;9497:4;9494:1;9487:15;13013:184;13065:77;13062:1;13055:88;13162:4;13159:1;13152:15;13186:4;13183:1;13176:15;13202:128;13242:3;13273:1;13269:6;13266:1;13263:13;13260:39;;;13279:18;;:::i;:::-;-1:-1:-1;13315:9:1;;13202:128::o;13751:470::-;13930:3;13968:6;13962:13;13984:53;14030:6;14025:3;14018:4;14010:6;14006:17;13984:53;:::i;:::-;14100:13;;14059:16;;;;14122:57;14100:13;14059:16;14156:4;14144:17;;14122:57;:::i;:::-;14195:20;;13751:470;-1:-1:-1;;;;13751:470:1:o;15857:125::-;15897:4;15925:1;15922;15919:8;15916:34;;;15930:18;;:::i;:::-;-1:-1:-1;15967:9:1;;15857:125::o;16760:195::-;16799:3;16830:66;16823:5;16820:77;16817:103;;16900:18;;:::i;:::-;-1:-1:-1;16947:1:1;16936:13;;16760:195::o;16960:184::-;17012:77;17009:1;17002:88;17109:4;17106:1;17099:15;17133:4;17130:1;17123:15;17149:120;17189:1;17215;17205:35;;17220:18;;:::i;:::-;-1:-1:-1;17254:9:1;;17149:120::o;17274:112::-;17306:1;17332;17322:35;;17337:18;;:::i;:::-;-1:-1:-1;17371:9:1;;17274:112::o;17391:512::-;17585:4;-1:-1:-1;;;;;17695:2:1;17687:6;17683:15;17672:9;17665:34;17747:2;17739:6;17735:15;17730:2;17719:9;17715:18;17708:43;;17787:6;17782:2;17771:9;17767:18;17760:34;17830:3;17825:2;17814:9;17810:18;17803:31;17851:46;17892:3;17881:9;17877:19;17869:6;17851:46;:::i;:::-;17843:54;17391:512;-1:-1:-1;;;;;;17391:512:1:o;17908:249::-;17977:6;18030:2;18018:9;18009:7;18005:23;18001:32;17998:52;;;18046:1;18043;18036:12;17998:52;18078:9;18072:16;18097:30;18121:5;18097:30;:::i;18162:184::-;18214:77;18211:1;18204:88;18311:4;18308:1;18301:15;18335:4;18332:1;18325:15
Swarm Source
ipfs://4e5bf81723224aeadc3cac491643522cf6bdbca91ea09fa848c3d9ed2713713e
Loading...
Loading
Loading...
Loading
[ 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.