Feature Tip: Add private address tag to any address under My Name Tag !
ERC-721
Overview
Max Total Supply
5,109 FLDP1
Holders
5,109
Market
Volume (24H)
N/A
Min Price (24H)
N/A
Max Price (24H)
N/A
Other Info
Token Contract
Balance
1 FLDP1Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
FluidNFT
Compiler Version
v0.8.21+commit.d9974bed
Optimization Enabled:
Yes with 10000000 runs
Other Settings:
paris EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: BUSL-1.1 pragma solidity 0.8.21; import "@openzeppelin/contracts/token/ERC721/ERC721.sol"; import "@openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol"; import "@openzeppelin/contracts/access/AccessControl.sol"; import "@openzeppelin/contracts/utils/Base64.sol"; import "@openzeppelin/contracts/utils/Strings.sol"; contract FluidNFT is ERC721, ERC721Enumerable, AccessControl { bytes32 public constant MINTER_ROLE = keccak256("MINTER_ROLE"); uint256 public immutable LEVEL; string private IMAGE_BASE64; constructor( address defaultAdmin_, address minter_, string memory name_, string memory symbol_, string memory image_, uint256 level_ ) ERC721(name_, symbol_) { _grantRole(DEFAULT_ADMIN_ROLE, defaultAdmin_); _grantRole(MINTER_ROLE, minter_); IMAGE_BASE64 = image_; LEVEL = level_; } function mint(address to) public onlyRole(MINTER_ROLE) returns(uint256 tokenId) { tokenId = totalSupply() + 1; _mint(to, tokenId); } // The following functions are overrides required by Solidity. function _baseURI() internal view override returns (string memory) {} function tokenURI(uint256 tokenId) public view override(ERC721) returns (string memory) { if (tokenId == 0 || tokenId > totalSupply()) return ""; return string( abi.encodePacked( 'data:application/json;base64,', Base64.encode( bytes( abi.encodePacked( '{"name":"Fluid Pass L', Strings.toString(LEVEL), ' #', Strings.toString(tokenId), '", "description":"This is Fluid Pass Level ', Strings.toString(LEVEL), '",', '"image":"', 'data:image/svg+xml;base64,', IMAGE_BASE64, '"}' ) ) ) ) ); } function supportsInterface(bytes4 interfaceId) public view override(ERC721, AccessControl, ERC721Enumerable) returns (bool) { return super.supportsInterface(interfaceId); } function _beforeTokenTransfer( address from, address to, uint256 firstTokenId, uint256 batchSize ) internal virtual override(ERC721, ERC721Enumerable) { super._beforeTokenTransfer(from, to, firstTokenId, batchSize); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.8.0) (access/AccessControl.sol) pragma solidity ^0.8.0; import "./IAccessControl.sol"; import "../utils/Context.sol"; import "../utils/Strings.sol"; import "../utils/introspection/ERC165.sol"; /** * @dev Contract module that allows children to implement role-based access * control mechanisms. This is a lightweight version that doesn't allow enumerating role * members except through off-chain means by accessing the contract event logs. Some * applications may benefit from on-chain enumerability, for those cases see * {AccessControlEnumerable}. * * Roles are referred to by their `bytes32` identifier. These should be exposed * in the external API and be unique. The best way to achieve this is by * using `public constant` hash digests: * * ``` * bytes32 public constant MY_ROLE = keccak256("MY_ROLE"); * ``` * * Roles can be used to represent a set of permissions. To restrict access to a * function call, use {hasRole}: * * ``` * function foo() public { * require(hasRole(MY_ROLE, msg.sender)); * ... * } * ``` * * Roles can be granted and revoked dynamically via the {grantRole} and * {revokeRole} functions. Each role has an associated admin role, and only * accounts that have a role's admin role can call {grantRole} and {revokeRole}. * * By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means * that only accounts with this role will be able to grant or revoke other * roles. More complex role relationships can be created by using * {_setRoleAdmin}. * * WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to * grant and revoke this role. Extra precautions should be taken to secure * accounts that have been granted it. */ abstract contract AccessControl is Context, IAccessControl, ERC165 { struct RoleData { mapping(address => bool) members; bytes32 adminRole; } mapping(bytes32 => RoleData) private _roles; bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00; /** * @dev Modifier that checks that an account has a specific role. Reverts * with a standardized message including the required role. * * The format of the revert reason is given by the following regular expression: * * /^AccessControl: account (0x[0-9a-f]{40}) is missing role (0x[0-9a-f]{64})$/ * * _Available since v4.1._ */ modifier onlyRole(bytes32 role) { _checkRole(role); _; } /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IAccessControl).interfaceId || super.supportsInterface(interfaceId); } /** * @dev Returns `true` if `account` has been granted `role`. */ function hasRole(bytes32 role, address account) public view virtual override returns (bool) { return _roles[role].members[account]; } /** * @dev Revert with a standard message if `_msgSender()` is missing `role`. * Overriding this function changes the behavior of the {onlyRole} modifier. * * Format of the revert message is described in {_checkRole}. * * _Available since v4.6._ */ function _checkRole(bytes32 role) internal view virtual { _checkRole(role, _msgSender()); } /** * @dev Revert with a standard message if `account` is missing `role`. * * The format of the revert reason is given by the following regular expression: * * /^AccessControl: account (0x[0-9a-f]{40}) is missing role (0x[0-9a-f]{64})$/ */ function _checkRole(bytes32 role, address account) internal view virtual { if (!hasRole(role, account)) { revert( string( abi.encodePacked( "AccessControl: account ", Strings.toHexString(account), " is missing role ", Strings.toHexString(uint256(role), 32) ) ) ); } } /** * @dev Returns the admin role that controls `role`. See {grantRole} and * {revokeRole}. * * To change a role's admin, use {_setRoleAdmin}. */ function getRoleAdmin(bytes32 role) public view virtual override returns (bytes32) { return _roles[role].adminRole; } /** * @dev Grants `role` to `account`. * * If `account` had not been already granted `role`, emits a {RoleGranted} * event. * * Requirements: * * - the caller must have ``role``'s admin role. * * May emit a {RoleGranted} event. */ function grantRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) { _grantRole(role, account); } /** * @dev Revokes `role` from `account`. * * If `account` had been granted `role`, emits a {RoleRevoked} event. * * Requirements: * * - the caller must have ``role``'s admin role. * * May emit a {RoleRevoked} event. */ function revokeRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) { _revokeRole(role, account); } /** * @dev Revokes `role` from the calling account. * * Roles are often managed via {grantRole} and {revokeRole}: this function's * purpose is to provide a mechanism for accounts to lose their privileges * if they are compromised (such as when a trusted device is misplaced). * * If the calling account had been revoked `role`, emits a {RoleRevoked} * event. * * Requirements: * * - the caller must be `account`. * * May emit a {RoleRevoked} event. */ function renounceRole(bytes32 role, address account) public virtual override { require(account == _msgSender(), "AccessControl: can only renounce roles for self"); _revokeRole(role, account); } /** * @dev Grants `role` to `account`. * * If `account` had not been already granted `role`, emits a {RoleGranted} * event. Note that unlike {grantRole}, this function doesn't perform any * checks on the calling account. * * May emit a {RoleGranted} event. * * [WARNING] * ==== * This function should only be called from the constructor when setting * up the initial roles for the system. * * Using this function in any other way is effectively circumventing the admin * system imposed by {AccessControl}. * ==== * * NOTE: This function is deprecated in favor of {_grantRole}. */ function _setupRole(bytes32 role, address account) internal virtual { _grantRole(role, account); } /** * @dev Sets `adminRole` as ``role``'s admin role. * * Emits a {RoleAdminChanged} event. */ function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual { bytes32 previousAdminRole = getRoleAdmin(role); _roles[role].adminRole = adminRole; emit RoleAdminChanged(role, previousAdminRole, adminRole); } /** * @dev Grants `role` to `account`. * * Internal function without access restriction. * * May emit a {RoleGranted} event. */ function _grantRole(bytes32 role, address account) internal virtual { if (!hasRole(role, account)) { _roles[role].members[account] = true; emit RoleGranted(role, account, _msgSender()); } } /** * @dev Revokes `role` from `account`. * * Internal function without access restriction. * * May emit a {RoleRevoked} event. */ function _revokeRole(bytes32 role, address account) internal virtual { if (hasRole(role, account)) { _roles[role].members[account] = false; emit RoleRevoked(role, account, _msgSender()); } } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (access/IAccessControl.sol) pragma solidity ^0.8.0; /** * @dev External interface of AccessControl declared to support ERC165 detection. */ interface IAccessControl { /** * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` * * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite * {RoleAdminChanged} not being emitted signaling this. * * _Available since v3.1._ */ event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole); /** * @dev Emitted when `account` is granted `role`. * * `sender` is the account that originated the contract call, an admin role * bearer except when using {AccessControl-_setupRole}. */ event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender); /** * @dev Emitted when `account` is revoked `role`. * * `sender` is the account that originated the contract call: * - if using `revokeRole`, it is the admin role bearer * - if using `renounceRole`, it is the role bearer (i.e. `account`) */ event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender); /** * @dev Returns `true` if `account` has been granted `role`. */ function hasRole(bytes32 role, address account) external view returns (bool); /** * @dev Returns the admin role that controls `role`. See {grantRole} and * {revokeRole}. * * To change a role's admin, use {AccessControl-_setRoleAdmin}. */ function getRoleAdmin(bytes32 role) external view returns (bytes32); /** * @dev Grants `role` to `account`. * * If `account` had not been already granted `role`, emits a {RoleGranted} * event. * * Requirements: * * - the caller must have ``role``'s admin role. */ function grantRole(bytes32 role, address account) external; /** * @dev Revokes `role` from `account`. * * If `account` had been granted `role`, emits a {RoleRevoked} event. * * Requirements: * * - the caller must have ``role``'s admin role. */ function revokeRole(bytes32 role, address account) external; /** * @dev Revokes `role` from the calling account. * * Roles are often managed via {grantRole} and {revokeRole}: this function's * purpose is to provide a mechanism for accounts to lose their privileges * if they are compromised (such as when a trusted device is misplaced). * * If the calling account had been granted `role`, emits a {RoleRevoked} * event. * * Requirements: * * - the caller must be `account`. */ function renounceRole(bytes32 role, address account) external; }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.8.2) (token/ERC721/ERC721.sol) pragma solidity ^0.8.0; import "./IERC721.sol"; import "./IERC721Receiver.sol"; import "./extensions/IERC721Metadata.sol"; import "../../utils/Address.sol"; import "../../utils/Context.sol"; import "../../utils/Strings.sol"; import "../../utils/introspection/ERC165.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: address zero is not a valid owner"); return _balances[owner]; } /** * @dev See {IERC721-ownerOf}. */ function ownerOf(uint256 tokenId) public view virtual override returns (address) { address owner = _ownerOf(tokenId); require(owner != address(0), "ERC721: invalid token ID"); return owner; } /** * @dev See {IERC721Metadata-name}. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev See {IERC721Metadata-symbol}. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev See {IERC721Metadata-tokenURI}. */ function tokenURI(uint256 tokenId) public view virtual override returns (string memory) { _requireMinted(tokenId); string memory baseURI = _baseURI(); return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : ""; } /** * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each * token will be the concatenation of the `baseURI` and the `tokenId`. Empty * by default, can be overridden in child contracts. */ function _baseURI() internal view virtual returns (string memory) { return ""; } /** * @dev See {IERC721-approve}. */ function approve(address to, uint256 tokenId) public virtual override { address owner = ERC721.ownerOf(tokenId); require(to != owner, "ERC721: approval to current owner"); require( _msgSender() == owner || isApprovedForAll(owner, _msgSender()), "ERC721: approve caller is not token owner or approved for all" ); _approve(to, tokenId); } /** * @dev See {IERC721-getApproved}. */ function getApproved(uint256 tokenId) public view virtual override returns (address) { _requireMinted(tokenId); return _tokenApprovals[tokenId]; } /** * @dev See {IERC721-setApprovalForAll}. */ function setApprovalForAll(address operator, bool approved) public virtual override { _setApprovalForAll(_msgSender(), operator, approved); } /** * @dev See {IERC721-isApprovedForAll}. */ function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) { return _operatorApprovals[owner][operator]; } /** * @dev See {IERC721-transferFrom}. */ function transferFrom( address from, address to, uint256 tokenId ) public virtual override { //solhint-disable-next-line max-line-length require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: caller is not token owner or approved"); _transfer(from, to, tokenId); } /** * @dev See {IERC721-safeTransferFrom}. */ function safeTransferFrom( address from, address to, uint256 tokenId ) public virtual override { safeTransferFrom(from, to, tokenId, ""); } /** * @dev See {IERC721-safeTransferFrom}. */ function safeTransferFrom( address from, address to, uint256 tokenId, bytes memory data ) public virtual override { require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: caller is not token owner or 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 the owner of the `tokenId`. Does NOT revert if token doesn't exist */ function _ownerOf(uint256 tokenId) internal view virtual returns (address) { return _owners[tokenId]; } /** * @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 _ownerOf(tokenId) != address(0); } /** * @dev Returns whether `spender` is allowed to manage `tokenId`. * * Requirements: * * - `tokenId` must exist. */ function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) { address owner = ERC721.ownerOf(tokenId); return (spender == owner || isApprovedForAll(owner, spender) || getApproved(tokenId) == spender); } /** * @dev Safely mints `tokenId` and transfers it to `to`. * * Requirements: * * - `tokenId` must not exist. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function _safeMint(address to, uint256 tokenId) internal virtual { _safeMint(to, tokenId, ""); } /** * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is * forwarded in {IERC721Receiver-onERC721Received} to contract recipients. */ function _safeMint( address to, uint256 tokenId, bytes memory data ) internal virtual { _mint(to, tokenId); require( _checkOnERC721Received(address(0), to, tokenId, data), "ERC721: transfer to non ERC721Receiver implementer" ); } /** * @dev Mints `tokenId` and transfers it to `to`. * * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible * * Requirements: * * - `tokenId` must not exist. * - `to` cannot be the zero address. * * Emits a {Transfer} event. */ function _mint(address to, uint256 tokenId) internal virtual { require(to != address(0), "ERC721: mint to the zero address"); require(!_exists(tokenId), "ERC721: token already minted"); _beforeTokenTransfer(address(0), to, tokenId, 1); // Check that tokenId was not minted by `_beforeTokenTransfer` hook require(!_exists(tokenId), "ERC721: token already minted"); unchecked { // Will not overflow unless all 2**256 token ids are minted to the same owner. // Given that tokens are minted one by one, it is impossible in practice that // this ever happens. Might change if we allow batch minting. // The ERC fails to describe this case. _balances[to] += 1; } _owners[tokenId] = to; emit Transfer(address(0), to, tokenId); _afterTokenTransfer(address(0), to, tokenId, 1); } /** * @dev Destroys `tokenId`. * The approval is cleared when the token is burned. * This is an internal function that does not check if the sender is authorized to operate on the token. * * Requirements: * * - `tokenId` must exist. * * Emits a {Transfer} event. */ function _burn(uint256 tokenId) internal virtual { address owner = ERC721.ownerOf(tokenId); _beforeTokenTransfer(owner, address(0), tokenId, 1); // Update ownership in case tokenId was transferred by `_beforeTokenTransfer` hook owner = ERC721.ownerOf(tokenId); // Clear approvals delete _tokenApprovals[tokenId]; unchecked { // Cannot overflow, as that would require more tokens to be burned/transferred // out than the owner initially received through minting and transferring in. _balances[owner] -= 1; } delete _owners[tokenId]; emit Transfer(owner, address(0), tokenId); _afterTokenTransfer(owner, address(0), tokenId, 1); } /** * @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, 1); // Check that tokenId was not transferred by `_beforeTokenTransfer` hook require(ERC721.ownerOf(tokenId) == from, "ERC721: transfer from incorrect owner"); // Clear approvals from the previous owner delete _tokenApprovals[tokenId]; unchecked { // `_balances[from]` cannot overflow for the same reason as described in `_burn`: // `from`'s balance is the number of token held, which is at least one before the current // transfer. // `_balances[to]` could overflow in the conditions described in `_mint`. That would require // all 2**256 token ids to be minted, which in practice is impossible. _balances[from] -= 1; _balances[to] += 1; } _owners[tokenId] = to; emit Transfer(from, to, tokenId); _afterTokenTransfer(from, to, tokenId, 1); } /** * @dev Approve `to` to operate on `tokenId` * * Emits an {Approval} event. */ function _approve(address to, uint256 tokenId) internal virtual { _tokenApprovals[tokenId] = to; emit Approval(ERC721.ownerOf(tokenId), to, tokenId); } /** * @dev Approve `operator` to operate on all of `owner` tokens * * Emits an {ApprovalForAll} event. */ function _setApprovalForAll( address owner, address operator, bool approved ) internal virtual { require(owner != operator, "ERC721: approve to caller"); _operatorApprovals[owner][operator] = approved; emit ApprovalForAll(owner, operator, approved); } /** * @dev Reverts if the `tokenId` has not been minted yet. */ function _requireMinted(uint256 tokenId) internal view virtual { require(_exists(tokenId), "ERC721: invalid token ID"); } /** * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address. * The call is not executed if the target address is not a contract. * * @param from address representing the previous owner of the given token ID * @param to target address that will receive the tokens * @param tokenId uint256 ID of the token to be transferred * @param data bytes optional data to send along with the call * @return bool whether the call correctly returned the expected magic value */ function _checkOnERC721Received( address from, address to, uint256 tokenId, bytes memory data ) private returns (bool) { if (to.isContract()) { try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, data) returns (bytes4 retval) { return retval == IERC721Receiver.onERC721Received.selector; } catch (bytes memory reason) { if (reason.length == 0) { revert("ERC721: transfer to non ERC721Receiver implementer"); } else { /// @solidity memory-safe-assembly assembly { revert(add(32, reason), mload(reason)) } } } } else { return true; } } /** * @dev Hook that is called before any token transfer. This includes minting and burning. If {ERC721Consecutive} is * used, the hook may be called as part of a consecutive (batch) mint, as indicated by `batchSize` greater than 1. * * Calling conditions: * * - When `from` and `to` are both non-zero, ``from``'s tokens will be transferred to `to`. * - When `from` is zero, the tokens will be minted for `to`. * - When `to` is zero, ``from``'s tokens will be burned. * - `from` and `to` are never both zero. * - `batchSize` is non-zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 firstTokenId, uint256 batchSize ) internal virtual {} /** * @dev Hook that is called after any token transfer. This includes minting and burning. If {ERC721Consecutive} is * used, the hook may be called as part of a consecutive (batch) mint, as indicated by `batchSize` greater than 1. * * Calling conditions: * * - When `from` and `to` are both non-zero, ``from``'s tokens were transferred to `to`. * - When `from` is zero, the tokens were minted for `to`. * - When `to` is zero, ``from``'s tokens were burned. * - `from` and `to` are never both zero. * - `batchSize` is non-zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _afterTokenTransfer( address from, address to, uint256 firstTokenId, uint256 batchSize ) internal virtual {} /** * @dev Unsafe write access to the balances, used by extensions that "mint" tokens using an {ownerOf} override. * * WARNING: Anyone calling this MUST ensure that the balances remain consistent with the ownership. The invariant * being that for any address `a` the value returned by `balanceOf(a)` must be equal to the number of tokens such * that `ownerOf(tokenId)` is `a`. */ // solhint-disable-next-line func-name-mixedcase function __unsafe_increaseBalance(address account, uint256 amount) internal { _balances[account] += amount; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.8.0) (token/ERC721/extensions/ERC721Enumerable.sol) pragma solidity ^0.8.0; import "../ERC721.sol"; import "./IERC721Enumerable.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 See {ERC721-_beforeTokenTransfer}. */ function _beforeTokenTransfer( address from, address to, uint256 firstTokenId, uint256 batchSize ) internal virtual override { super._beforeTokenTransfer(from, to, firstTokenId, batchSize); if (batchSize > 1) { // Will only trigger during construction. Batch transferring (minting) is not available afterwards. revert("ERC721Enumerable: consecutive transfers not supported"); } uint256 tokenId = firstTokenId; 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(); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.5.0) (token/ERC721/extensions/IERC721Enumerable.sol) pragma solidity ^0.8.0; import "../IERC721.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); /** * @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); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol) pragma solidity ^0.8.0; import "../IERC721.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); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.8.0) (token/ERC721/IERC721.sol) pragma solidity ^0.8.0; import "../../utils/introspection/IERC165.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`. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId, bytes calldata data ) external; /** * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients * are aware of the ERC721 protocol to prevent tokens from being forever locked. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Transfers `tokenId` token from `from` to `to`. * * WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721 * or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must * understand this adds an external call which potentially creates a reentrancy vulnerability. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Gives permission to `to` to transfer `tokenId` token to another account. * The approval is cleared when the token is transferred. * * Only a single account can be approved at a time, so approving the zero address clears previous approvals. * * Requirements: * * - The caller must own the token or be an approved operator. * - `tokenId` must exist. * * Emits an {Approval} event. */ function approve(address to, uint256 tokenId) external; /** * @dev Approve or remove `operator` as an operator for the caller. * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. * * Requirements: * * - The `operator` cannot be the caller. * * Emits an {ApprovalForAll} event. */ function setApprovalForAll(address operator, bool _approved) external; /** * @dev Returns the account approved for `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function getApproved(uint256 tokenId) external view returns (address operator); /** * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`. * * See {setApprovalForAll} */ function isApprovedForAll(address owner, address operator) external view returns (bool); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/IERC721Receiver.sol) pragma solidity ^0.8.0; /** * @title ERC721 token receiver interface * @dev Interface for any contract that wants to support safeTransfers * from ERC721 asset contracts. */ interface IERC721Receiver { /** * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} * by `operator` from `from`, this function is called. * * It must return its Solidity selector to confirm the token transfer. * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. * * The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`. */ function onERC721Received( address operator, address from, uint256 tokenId, bytes calldata data ) external returns (bytes4); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.8.0) (utils/Address.sol) pragma solidity ^0.8.1; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== * * [IMPORTANT] * ==== * You shouldn't rely on `isContract` to protect against flash loan attacks! * * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract * constructor. * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize/address.code.length, which returns 0 // for contracts in construction, since the code is only stored at the end // of the constructor execution. return account.code.length > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain `call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResultFromTarget(target, success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResultFromTarget(target, success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResultFromTarget(target, success, returndata, errorMessage); } /** * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract. * * _Available since v4.8._ */ function verifyCallResultFromTarget( address target, bool success, bytes memory returndata, string memory errorMessage ) internal view returns (bytes memory) { if (success) { if (returndata.length == 0) { // only check isContract if the call was successful and the return data is empty // otherwise we already know that it was a contract require(isContract(target), "Address: call to non-contract"); } return returndata; } else { _revert(returndata, errorMessage); } } /** * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the * revert reason or using the provided one. * * _Available since v4.3._ */ function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { _revert(returndata, errorMessage); } } function _revert(bytes memory returndata, string memory errorMessage) private pure { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly /// @solidity memory-safe-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.7.0) (utils/Base64.sol) pragma solidity ^0.8.0; /** * @dev Provides a set of functions to operate with Base64 strings. * * _Available since v4.5._ */ library Base64 { /** * @dev Base64 Encoding/Decoding Table */ string internal constant _TABLE = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; /** * @dev Converts a `bytes` to its Bytes64 `string` representation. */ function encode(bytes memory data) internal pure returns (string memory) { /** * Inspired by Brecht Devos (Brechtpd) implementation - MIT licence * https://github.com/Brechtpd/base64/blob/e78d9fd951e7b0977ddca77d92dc85183770daf4/base64.sol */ if (data.length == 0) return ""; // Loads the table into memory string memory table = _TABLE; // Encoding takes 3 bytes chunks of binary data from `bytes` data parameter // and split into 4 numbers of 6 bits. // The final Base64 length should be `bytes` data length multiplied by 4/3 rounded up // - `data.length + 2` -> Round up // - `/ 3` -> Number of 3-bytes chunks // - `4 *` -> 4 characters for each chunk string memory result = new string(4 * ((data.length + 2) / 3)); /// @solidity memory-safe-assembly assembly { // Prepare the lookup table (skip the first "length" byte) let tablePtr := add(table, 1) // Prepare result pointer, jump over length let resultPtr := add(result, 32) // Run over the input, 3 bytes at a time for { let dataPtr := data let endPtr := add(data, mload(data)) } lt(dataPtr, endPtr) { } { // Advance 3 bytes dataPtr := add(dataPtr, 3) let input := mload(dataPtr) // To write each character, shift the 3 bytes (18 bits) chunk // 4 times in blocks of 6 bits for each character (18, 12, 6, 0) // and apply logical AND with 0x3F which is the number of // the previous character in the ASCII table prior to the Base64 Table // The result is then added to the table to get the character to write, // and finally write it in the result pointer but with a left shift // of 256 (1 byte) - 8 (1 ASCII char) = 248 bits mstore8(resultPtr, mload(add(tablePtr, and(shr(18, input), 0x3F)))) resultPtr := add(resultPtr, 1) // Advance mstore8(resultPtr, mload(add(tablePtr, and(shr(12, input), 0x3F)))) resultPtr := add(resultPtr, 1) // Advance mstore8(resultPtr, mload(add(tablePtr, and(shr(6, input), 0x3F)))) resultPtr := add(resultPtr, 1) // Advance mstore8(resultPtr, mload(add(tablePtr, and(input, 0x3F)))) resultPtr := add(resultPtr, 1) // Advance } // When data `bytes` is not exactly 3 bytes long // it is padded with `=` characters at the end switch mod(mload(data), 3) case 1 { mstore8(sub(resultPtr, 1), 0x3d) mstore8(sub(resultPtr, 2), 0x3d) } case 2 { mstore8(sub(resultPtr, 1), 0x3d) } } return result; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol) pragma solidity ^0.8.0; import "./IERC165.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; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC165 standard, as defined in the * https://eips.ethereum.org/EIPS/eip-165[EIP]. * * Implementers can declare support of contract interfaces, which can then be * queried by others ({ERC165Checker}). * * For an implementation, see {ERC165}. */ interface IERC165 { /** * @dev Returns true if this contract implements the interface defined by * `interfaceId`. See the corresponding * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] * to learn more about how these ids are created. * * This function call must use less than 30 000 gas. */ function supportsInterface(bytes4 interfaceId) external view returns (bool); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.8.0) (utils/math/Math.sol) pragma solidity ^0.8.0; /** * @dev Standard math utilities missing in the Solidity language. */ library Math { enum Rounding { Down, // Toward negative infinity Up, // Toward infinity Zero // Toward zero } /** * @dev Returns the largest of two numbers. */ function max(uint256 a, uint256 b) internal pure returns (uint256) { return a > b ? a : b; } /** * @dev Returns the smallest of two numbers. */ function min(uint256 a, uint256 b) internal pure returns (uint256) { return a < b ? a : b; } /** * @dev Returns the average of two numbers. The result is rounded towards * zero. */ function average(uint256 a, uint256 b) internal pure returns (uint256) { // (a + b) / 2 can overflow. return (a & b) + (a ^ b) / 2; } /** * @dev Returns the ceiling of the division of two numbers. * * This differs from standard division with `/` in that it rounds up instead * of rounding down. */ function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) { // (a + b - 1) / b can overflow on addition, so we distribute. return a == 0 ? 0 : (a - 1) / b + 1; } /** * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0 * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv) * with further edits by Uniswap Labs also under MIT license. */ function mulDiv( uint256 x, uint256 y, uint256 denominator ) internal pure returns (uint256 result) { unchecked { // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256 // variables such that product = prod1 * 2^256 + prod0. uint256 prod0; // Least significant 256 bits of the product uint256 prod1; // Most significant 256 bits of the product assembly { let mm := mulmod(x, y, not(0)) prod0 := mul(x, y) prod1 := sub(sub(mm, prod0), lt(mm, prod0)) } // Handle non-overflow cases, 256 by 256 division. if (prod1 == 0) { return prod0 / denominator; } // Make sure the result is less than 2^256. Also prevents denominator == 0. require(denominator > prod1); /////////////////////////////////////////////// // 512 by 256 division. /////////////////////////////////////////////// // Make division exact by subtracting the remainder from [prod1 prod0]. uint256 remainder; assembly { // Compute remainder using mulmod. remainder := mulmod(x, y, denominator) // Subtract 256 bit number from 512 bit number. prod1 := sub(prod1, gt(remainder, prod0)) prod0 := sub(prod0, remainder) } // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1. // See https://cs.stackexchange.com/q/138556/92363. // Does not overflow because the denominator cannot be zero at this stage in the function. uint256 twos = denominator & (~denominator + 1); assembly { // Divide denominator by twos. denominator := div(denominator, twos) // Divide [prod1 prod0] by twos. prod0 := div(prod0, twos) // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one. twos := add(div(sub(0, twos), twos), 1) } // Shift in bits from prod1 into prod0. prod0 |= prod1 * twos; // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for // four bits. That is, denominator * inv = 1 mod 2^4. uint256 inverse = (3 * denominator) ^ 2; // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works // in modular arithmetic, doubling the correct bits in each step. inverse *= 2 - denominator * inverse; // inverse mod 2^8 inverse *= 2 - denominator * inverse; // inverse mod 2^16 inverse *= 2 - denominator * inverse; // inverse mod 2^32 inverse *= 2 - denominator * inverse; // inverse mod 2^64 inverse *= 2 - denominator * inverse; // inverse mod 2^128 inverse *= 2 - denominator * inverse; // inverse mod 2^256 // Because the division is now exact we can divide by multiplying with the modular inverse of denominator. // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1 // is no longer required. result = prod0 * inverse; return result; } } /** * @notice Calculates x * y / denominator with full precision, following the selected rounding direction. */ function mulDiv( uint256 x, uint256 y, uint256 denominator, Rounding rounding ) internal pure returns (uint256) { uint256 result = mulDiv(x, y, denominator); if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) { result += 1; } return result; } /** * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down. * * Inspired by Henry S. Warren, Jr.'s "Hacker's Delight" (Chapter 11). */ function sqrt(uint256 a) internal pure returns (uint256) { if (a == 0) { return 0; } // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target. // // We know that the "msb" (most significant bit) of our target number `a` is a power of 2 such that we have // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`. // // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)` // → `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))` // → `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)` // // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit. uint256 result = 1 << (log2(a) >> 1); // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128, // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision // into the expected uint128 result. unchecked { result = (result + a / result) >> 1; result = (result + a / result) >> 1; result = (result + a / result) >> 1; result = (result + a / result) >> 1; result = (result + a / result) >> 1; result = (result + a / result) >> 1; result = (result + a / result) >> 1; return min(result, a / result); } } /** * @notice Calculates sqrt(a), following the selected rounding direction. */ function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) { unchecked { uint256 result = sqrt(a); return result + (rounding == Rounding.Up && result * result < a ? 1 : 0); } } /** * @dev Return the log in base 2, rounded down, of a positive value. * Returns 0 if given 0. */ function log2(uint256 value) internal pure returns (uint256) { uint256 result = 0; unchecked { if (value >> 128 > 0) { value >>= 128; result += 128; } if (value >> 64 > 0) { value >>= 64; result += 64; } if (value >> 32 > 0) { value >>= 32; result += 32; } if (value >> 16 > 0) { value >>= 16; result += 16; } if (value >> 8 > 0) { value >>= 8; result += 8; } if (value >> 4 > 0) { value >>= 4; result += 4; } if (value >> 2 > 0) { value >>= 2; result += 2; } if (value >> 1 > 0) { result += 1; } } return result; } /** * @dev Return the log in base 2, following the selected rounding direction, of a positive value. * Returns 0 if given 0. */ function log2(uint256 value, Rounding rounding) internal pure returns (uint256) { unchecked { uint256 result = log2(value); return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0); } } /** * @dev Return the log in base 10, rounded down, of a positive value. * Returns 0 if given 0. */ function log10(uint256 value) internal pure returns (uint256) { uint256 result = 0; unchecked { if (value >= 10**64) { value /= 10**64; result += 64; } if (value >= 10**32) { value /= 10**32; result += 32; } if (value >= 10**16) { value /= 10**16; result += 16; } if (value >= 10**8) { value /= 10**8; result += 8; } if (value >= 10**4) { value /= 10**4; result += 4; } if (value >= 10**2) { value /= 10**2; result += 2; } if (value >= 10**1) { result += 1; } } return result; } /** * @dev Return the log in base 10, following the selected rounding direction, of a positive value. * Returns 0 if given 0. */ function log10(uint256 value, Rounding rounding) internal pure returns (uint256) { unchecked { uint256 result = log10(value); return result + (rounding == Rounding.Up && 10**result < value ? 1 : 0); } } /** * @dev Return the log in base 256, rounded down, of a positive value. * Returns 0 if given 0. * * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string. */ function log256(uint256 value) internal pure returns (uint256) { uint256 result = 0; unchecked { if (value >> 128 > 0) { value >>= 128; result += 16; } if (value >> 64 > 0) { value >>= 64; result += 8; } if (value >> 32 > 0) { value >>= 32; result += 4; } if (value >> 16 > 0) { value >>= 16; result += 2; } if (value >> 8 > 0) { result += 1; } } return result; } /** * @dev Return the log in base 10, following the selected rounding direction, of a positive value. * Returns 0 if given 0. */ function log256(uint256 value, Rounding rounding) internal pure returns (uint256) { unchecked { uint256 result = log256(value); return result + (rounding == Rounding.Up && 1 << (result * 8) < value ? 1 : 0); } } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.8.0) (utils/Strings.sol) pragma solidity ^0.8.0; import "./math/Math.sol"; /** * @dev String operations. */ library Strings { bytes16 private constant _SYMBOLS = "0123456789abcdef"; uint8 private constant _ADDRESS_LENGTH = 20; /** * @dev Converts a `uint256` to its ASCII `string` decimal representation. */ function toString(uint256 value) internal pure returns (string memory) { unchecked { uint256 length = Math.log10(value) + 1; string memory buffer = new string(length); uint256 ptr; /// @solidity memory-safe-assembly assembly { ptr := add(buffer, add(32, length)) } while (true) { ptr--; /// @solidity memory-safe-assembly assembly { mstore8(ptr, byte(mod(value, 10), _SYMBOLS)) } value /= 10; if (value == 0) break; } return buffer; } } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation. */ function toHexString(uint256 value) internal pure returns (string memory) { unchecked { return toHexString(value, Math.log256(value) + 1); } } /** * @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] = _SYMBOLS[value & 0xf]; value >>= 4; } require(value == 0, "Strings: hex length insufficient"); return string(buffer); } /** * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation. */ function toHexString(address addr) internal pure returns (string memory) { return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH); } }
{ "optimizer": { "enabled": true, "runs": 10000000 }, "evmVersion": "paris", "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "metadata": { "useLiteralContent": true }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"defaultAdmin_","type":"address"},{"internalType":"address","name":"minter_","type":"address"},{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"string","name":"image_","type":"string"},{"internalType":"uint256","name":"level_","type":"uint256"}],"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":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","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":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LEVEL","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINTER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","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":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"to","type":"address"}],"name":"mint","outputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","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":"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"}]
Contract Creation Code
60a06040523480156200001157600080fd5b506040516200323e3803806200323e833981016040819052620000349162000236565b8383600062000044838262000385565b50600162000053828262000385565b506200006591506000905087620000af565b620000917f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a686620000af565b600b6200009f838262000385565b5060805250620004519350505050565b6000828152600a602090815260408083206001600160a01b038516845290915290205460ff1662000150576000828152600a602090815260408083206001600160a01b03851684529091529020805460ff191660011790556200010f3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b80516001600160a01b03811681146200016c57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200019957600080fd5b81516001600160401b0380821115620001b657620001b662000171565b604051601f8301601f19908116603f01168101908282118183101715620001e157620001e162000171565b81604052838152602092508683858801011115620001fe57600080fd5b600091505b8382101562000222578582018301518183018401529082019062000203565b600093810190920192909252949350505050565b60008060008060008060c087890312156200025057600080fd5b6200025b8762000154565b95506200026b6020880162000154565b60408801519095506001600160401b03808211156200028957600080fd5b620002978a838b0162000187565b95506060890151915080821115620002ae57600080fd5b620002bc8a838b0162000187565b94506080890151915080821115620002d357600080fd5b50620002e289828a0162000187565b92505060a087015190509295509295509295565b600181811c908216806200030b57607f821691505b6020821081036200032c57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200038057600081815260208120601f850160051c810160208610156200035b5750805b601f850160051c820191505b818110156200037c5782815560010162000367565b5050505b505050565b81516001600160401b03811115620003a157620003a162000171565b620003b981620003b28454620002f6565b8462000332565b602080601f831160018114620003f15760008415620003d85750858301515b600019600386901b1c1916600185901b1785556200037c565b600085815260208120601f198616915b82811015620004225788860151825594840194600190910190840162000401565b5085821015620004415787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b608051612dc36200047b6000396000818161027f01528181610c6d0152610c9f0152612dc36000f3fe608060405234801561001057600080fd5b50600436106101a35760003560e01c80634f6ccce7116100ee578063a217fddf11610097578063c87b56dd11610071578063c87b56dd146103b5578063d5391393146103c8578063d547741f146103ef578063e985e9c51461040257600080fd5b8063a217fddf14610387578063a22cb4651461038f578063b88d4fde146103a257600080fd5b806370a08231116100c857806370a082311461032657806391d148541461033957806395d89b411461037f57600080fd5b80634f6ccce7146102ed5780636352211e146103005780636a6278421461031357600080fd5b8063248a9ca3116101505780632f745c591161012a5780632f745c59146102b457806336568abe146102c757806342842e0e146102da57600080fd5b8063248a9ca3146102575780632c78470c1461027a5780632f2ff15d146102a157600080fd5b8063095ea7b311610181578063095ea7b31461021d57806318160ddd1461023257806323b872dd1461024457600080fd5b806301ffc9a7146101a857806306fdde03146101d0578063081812fc146101e5575b600080fd5b6101bb6101b6366004612516565b61044b565b60405190151581526020015b60405180910390f35b6101d861045c565b6040516101c791906125a1565b6101f86101f33660046125b4565b6104ee565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101c7565b61023061022b3660046125f6565b610522565b005b6008545b6040519081526020016101c7565b610230610252366004612620565b6106b3565b6102366102653660046125b4565b6000908152600a602052604090206001015490565b6102367f000000000000000000000000000000000000000000000000000000000000000081565b6102306102af36600461265c565b610754565b6102366102c23660046125f6565b610779565b6102306102d536600461265c565b610848565b6102306102e8366004612620565b6108fb565b6102366102fb3660046125b4565b610916565b6101f861030e3660046125b4565b6109d4565b610236610321366004612688565b610a60565b610236610334366004612688565b610aac565b6101bb61034736600461265c565b6000918252600a6020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b6101d8610b7a565b610236600081565b61023061039d3660046126a3565b610b89565b6102306103b036600461270e565b610b94565b6101d86103c33660046125b4565b610c3c565b6102367f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6102306103fd36600461265c565b610d12565b6101bb610410366004612808565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205460ff1690565b600061045682610d37565b92915050565b60606000805461046b90612832565b80601f016020809104026020016040519081016040528092919081815260200182805461049790612832565b80156104e45780601f106104b9576101008083540402835291602001916104e4565b820191906000526020600020905b8154815290600101906020018083116104c757829003601f168201915b5050505050905090565b60006104f982610d8d565b5060009081526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b600061052d826109d4565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036105ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f720000000000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff8216148061061857506106188133610410565b6106a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c00000060648201526084016105e6565b6106ae8383610e1b565b505050565b6106bd3382610ebb565b610749576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206f7220617070726f7665640000000000000000000000000000000000000060648201526084016105e6565b6106ae838383610f7b565b6000828152600a602052604090206001015461076f81611283565b6106ae838361128d565b600061078483610aac565b8210610812576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201527f74206f6620626f756e647300000000000000000000000000000000000000000060648201526084016105e6565b5073ffffffffffffffffffffffffffffffffffffffff919091166000908152600660209081526040808320938352929052205490565b73ffffffffffffffffffffffffffffffffffffffff811633146108ed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084016105e6565b6108f78282611381565b5050565b6106ae83838360405180602001604052806000815250610b94565b600061092160085490565b82106109af576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201527f7574206f6620626f756e6473000000000000000000000000000000000000000060648201526084016105e6565b600882815481106109c2576109c261287f565b90600052602060002001549050919050565b60008181526002602052604081205473ffffffffffffffffffffffffffffffffffffffff1680610456576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e204944000000000000000060448201526064016105e6565b60007f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6610a8c81611283565b600854610a9a9060016128dd565b9150610aa6838361143c565b50919050565b600073ffffffffffffffffffffffffffffffffffffffff8216610b51576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f74206120766160448201527f6c6964206f776e6572000000000000000000000000000000000000000000000060648201526084016105e6565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b60606001805461046b90612832565b6108f733838361166f565b610b9e3383610ebb565b610c2a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206f7220617070726f7665640000000000000000000000000000000000000060648201526084016105e6565b610c368484848461179c565b50505050565b6060811580610c4c575060085482115b15610c6557505060408051602081019091526000815290565b610cec610c917f000000000000000000000000000000000000000000000000000000000000000061183f565b610c9a8461183f565b610cc37f000000000000000000000000000000000000000000000000000000000000000061183f565b600b604051602001610cd894939291906129c4565b6040516020818303038152906040526118fd565b604051602001610cfc9190612b58565b6040516020818303038152906040529050919050565b6000828152600a6020526040902060010154610d2d81611283565b6106ae8383611381565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b000000000000000000000000000000000000000000000000000000001480610456575061045682611a50565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff16610e18576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e204944000000000000000060448201526064016105e6565b50565b600081815260046020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091558190610e75826109d4565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080610ec7836109d4565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480610f35575073ffffffffffffffffffffffffffffffffffffffff80821660009081526005602090815260408083209388168352929052205460ff165b80610f7357508373ffffffffffffffffffffffffffffffffffffffff16610f5b846104ee565b73ffffffffffffffffffffffffffffffffffffffff16145b949350505050565b8273ffffffffffffffffffffffffffffffffffffffff16610f9b826109d4565b73ffffffffffffffffffffffffffffffffffffffff161461103e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e657200000000000000000000000000000000000000000000000000000060648201526084016105e6565b73ffffffffffffffffffffffffffffffffffffffff82166110e0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016105e6565b6110ed8383836001611aa6565b8273ffffffffffffffffffffffffffffffffffffffff1661110d826109d4565b73ffffffffffffffffffffffffffffffffffffffff16146111b0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e657200000000000000000000000000000000000000000000000000000060648201526084016105e6565b600081815260046020908152604080832080547fffffffffffffffffffffffff000000000000000000000000000000000000000090811690915573ffffffffffffffffffffffffffffffffffffffff8781168086526003855283862080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01905590871680865283862080546001019055868652600290945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b610e188133611ab2565b6000828152600a6020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff166108f7576000828152600a6020908152604080832073ffffffffffffffffffffffffffffffffffffffff85168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556113233390565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000828152600a6020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16156108f7576000828152600a6020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b73ffffffffffffffffffffffffffffffffffffffff82166114b9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016105e6565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff1615611545576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016105e6565b611553600083836001611aa6565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff16156115df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016105e6565b73ffffffffffffffffffffffffffffffffffffffff8216600081815260036020908152604080832080546001019055848352600290915280822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611704576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016105e6565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6117a7848484610f7b565b6117b384848484611b6c565b610c36576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016105e6565b6060600061184c83611d5f565b600101905060008167ffffffffffffffff81111561186c5761186c6126df565b6040519080825280601f01601f191660200182016040528015611896576020820181803683370190505b5090508181016020015b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85049450846118a057509392505050565b6060815160000361191c57505060408051602081019091526000815290565b6000604051806060016040528060408152602001612d4e604091399050600060038451600261194b91906128dd565b6119559190612b9d565b611960906004612bd8565b67ffffffffffffffff811115611978576119786126df565b6040519080825280601f01601f1916602001820160405280156119a2576020820181803683370190505b509050600182016020820185865187015b80821015611a0e576003820191508151603f8160121c168501518453600184019350603f81600c1c168501518453600184019350603f8160061c168501518453600184019350603f81168501518453506001830192506119b3565b5050600386510660018114611a2a5760028114611a3d57611a45565b603d6001830353603d6002830353611a45565b603d60018303535b509195945050505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f780e9d63000000000000000000000000000000000000000000000000000000001480610456575061045682611e41565b610c3684848484611f24565b6000828152600a6020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff166108f757611af2816120c8565b611afd8360206120e7565b604051602001611b0e929190612bef565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a00000000000000000000000000000000000000000000000000000000082526105e6916004016125a1565b600073ffffffffffffffffffffffffffffffffffffffff84163b15611d54576040517f150b7a0200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063150b7a0290611be3903390899088908890600401612c70565b6020604051808303816000875af1925050508015611c3c575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252611c3991810190612cb9565b60015b611d09573d808015611c6a576040519150601f19603f3d011682016040523d82523d6000602084013e611c6f565b606091505b508051600003611d01576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016105e6565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a0200000000000000000000000000000000000000000000000000000000149050610f73565b506001949350505050565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310611da8577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310611dd4576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310611df257662386f26fc10000830492506010015b6305f5e1008310611e0a576305f5e100830492506008015b6127108310611e1e57612710830492506004015b60648310611e30576064830492506002015b600a83106104565760010192915050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd000000000000000000000000000000000000000000000000000000001480611ed457507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061045657507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610456565b6001811115611fb5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f455243373231456e756d657261626c653a20636f6e736563757469766520747260448201527f616e7366657273206e6f7420737570706f72746564000000000000000000000060648201526084016105e6565b8173ffffffffffffffffffffffffffffffffffffffff851661201e5761201981600880546000838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b61205b565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161461205b5761205b8582612331565b73ffffffffffffffffffffffffffffffffffffffff84166120845761207f816123e8565b6120c1565b8473ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146120c1576120c18482612497565b5050505050565b606061045673ffffffffffffffffffffffffffffffffffffffff831660145b606060006120f6836002612bd8565b6121019060026128dd565b67ffffffffffffffff811115612119576121196126df565b6040519080825280601f01601f191660200182016040528015612143576020820181803683370190505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061217a5761217a61287f565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f7800000000000000000000000000000000000000000000000000000000000000816001815181106121dd576121dd61287f565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506000612219846002612bd8565b6122249060016128dd565b90505b60018111156122c1577f303132333435363738396162636465660000000000000000000000000000000085600f16601081106122655761226561287f565b1a60f81b82828151811061227b5761227b61287f565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049490941c936122ba81612cd6565b9050612227565b50831561232a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016105e6565b9392505050565b6000600161233e84610aac565b6123489190612d0b565b6000838152600760205260409020549091508082146123a85773ffffffffffffffffffffffffffffffffffffffff841660009081526006602090815260408083208584528252808320548484528184208190558352600790915290208190555b50600091825260076020908152604080842084905573ffffffffffffffffffffffffffffffffffffffff9094168352600681528383209183525290812055565b6008546000906123fa90600190612d0b565b600083815260096020526040812054600880549394509092849081106124225761242261287f565b9060005260206000200154905080600883815481106124435761244361287f565b600091825260208083209091019290925582815260099091526040808220849055858252812055600880548061247b5761247b612d1e565b6001900381819060005260206000200160009055905550505050565b60006124a283610aac565b73ffffffffffffffffffffffffffffffffffffffff9093166000908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114610e1857600080fd5b60006020828403121561252857600080fd5b813561232a816124e8565b60005b8381101561254e578181015183820152602001612536565b50506000910152565b6000815180845261256f816020860160208601612533565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061232a6020830184612557565b6000602082840312156125c657600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff811681146125f157600080fd5b919050565b6000806040838503121561260957600080fd5b612612836125cd565b946020939093013593505050565b60008060006060848603121561263557600080fd5b61263e846125cd565b925061264c602085016125cd565b9150604084013590509250925092565b6000806040838503121561266f57600080fd5b8235915061267f602084016125cd565b90509250929050565b60006020828403121561269a57600080fd5b61232a826125cd565b600080604083850312156126b657600080fd5b6126bf836125cd565b9150602083013580151581146126d457600080fd5b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806000806080858703121561272457600080fd5b61272d856125cd565b935061273b602086016125cd565b925060408501359150606085013567ffffffffffffffff8082111561275f57600080fd5b818701915087601f83011261277357600080fd5b813581811115612785576127856126df565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156127cb576127cb6126df565b816040528281528a60208487010111156127e457600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b6000806040838503121561281b57600080fd5b612824836125cd565b915061267f602084016125cd565b600181811c9082168061284657607f821691505b602082108103610aa6577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115610456576104566128ae565b8054600090600181811c908083168061290a57607f831692505b60208084108203612944577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b818015612958576001811461298b576129b8565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00861689528415158502890196506129b8565b60008881526020902060005b868110156129b05781548b820152908501908301612997565b505084890196505b50505050505092915050565b7f7b226e616d65223a22466c7569642050617373204c00000000000000000000008152600085516129fc816015850160208a01612533565b7f20230000000000000000000000000000000000000000000000000000000000006015918401918201528551612a39816017840160208a01612533565b7f222c20226465736372697074696f6e223a225468697320697320466c75696420601792909101918201527f50617373204c6576656c2000000000000000000000000000000000000000000060378201528451612a9d816042840160208901612533565b7f222c000000000000000000000000000000000000000000000000000000000000604292909101918201527f22696d616765223a22000000000000000000000000000000000000000000000060448201527f646174613a696d6167652f7376672b786d6c3b6261736536342c000000000000604d820152612b4d612b2460678301866128f0565b7f227d000000000000000000000000000000000000000000000000000000000000815260020190565b979650505050505050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c000000815260008251612b9081601d850160208701612533565b91909101601d0192915050565b600082612bd3577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b8082028115828204841417610456576104566128ae565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351612c27816017850160208801612533565b7f206973206d697373696e6720726f6c65200000000000000000000000000000006017918401918201528351612c64816028840160208801612533565b01602801949350505050565b600073ffffffffffffffffffffffffffffffffffffffff808716835280861660208401525083604083015260806060830152612caf6080830184612557565b9695505050505050565b600060208284031215612ccb57600080fd5b815161232a816124e8565b600081612ce557612ce56128ae565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b81810381811115610456576104566128ae565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa2646970667358221220d3497b94e1ce665a07198e3601de4e0f85d57f66bf796acdd417b1ddfc05154f64736f6c634300081500330000000000000000000000009800020b610194dba52cf606e8aa142f9f256166000000000000000000000000638bc21b096e1be1434172c46a1aafeb40604a6800000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000d466c7569642050617373204c31000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005464c44503100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000031c850484e325a79423361575230614430694d7a63314969426f5a576c6e61485139496a55774d434967646d6c6c64304a76654430694d43417749444d334e5341314d44416949475a7062477739496d3576626d5569494868746247357a50534a6f644852774f693876643364334c6e637a4c6d39795a7938794d4441774c334e325a79492b436a786e49474e7361584174634746306144306964584a734b434e6a62476c774d4638784d5455794e3138794e6a6b314e696b6950676f38636d566a6443423361575230614430694d7a63314969426f5a576c6e61485139496a55774d4349675a6d6c7362443069596d7868593273694c7a344b504763676233426859326c30655430694d4334324969426d615778305a584939496e56796243676a5a6d6c73644756794d46396d587a45784e544933587a49324f5455324b53492b436a786c6247787063484e6c49474e34505349794d5455754e5463334969426a655430694d5451774c6a6b334d694967636e6739496a49334d7934344e54516949484a35505349794e7a49754e5459354969426d6157787350534a31636d776f49334268615735304d4639736157356c59584a664d5445314d6a64664d6a59354e5459704969382b436a77765a7a344b504763676233426859326c30655430694d4334344969426d615778305a584939496e56796243676a5a6d6c73644756794d56396d587a45784e544933587a49324f5455324b53492b436a786a61584a6a6247556759336739496a4d324e5334344969426a655430694d546b314c6a4d784d794967636a30694d5441794c6a49314e7949675a6d6c7362443069497a4e434f444a474e69497650676f384c32632b436a786e4947397759574e7064486b39496a41754e5349675a6d6c736447567950534a31636d776f49325a706248526c636a4a665a6c38784d5455794e3138794e6a6b314e696b6950676f3859326c795932786c49474e34505349784d7934334d5451344969426a655430694d7a51334c6a4d354e694967636a30694d5463754d5467334e5349675a6d6c7362443069497a4e434f444a474e69497650676f384c32632b436a786e49475a706248526c636a306964584a734b434e6d615778305a58497a58324a664d5445314d6a64664d6a59354e545970496a344b50484a6c59335167654430694d5463754d7a55354e434967655430694d5463754d7a59784d79496764326c6b64476739496a4d304d4334794e7a67694947686c6157646f644430694e4459314c6a49334f434967636e6739496a4d304c6a63794d6a496949475a7062477739496e646f6158526c4969426d615778734c57397759574e7064486b39496a41754d4451694c7a344b50484a6c59335167654430694d5463754f4467774d694967655430694d5463754f4467794d69496764326c6b64476739496a4d7a4f5334794d7a59694947686c6157646f644430694e4459304c6a497a4e694967636e6739496a4d304c6a49774d54516949484e30636d39725a54306964584a734b434e7759576c756444466662476c755a574679587a45784e544933587a49324f5455324b534967633352796232746c4c5864705a48526f505349784c6a41304d5459334969382b436a77765a7a344b50484268644767675a443069545451334c6a457a4d7a49674e4455314c6a41794e3159304d7a51754f444931534459774c6a41334e5446574e444d334c6a67354d3067314d4334334f544935566a51304d79347a4e7a68494e546b754d5467334d3159304e4459754e445131534455774c6a63354d6a6c574e4455314c6a41794e3067304e7934784d7a4d79576b30324d7934304d446b79494451314e5334774d6a64574e444d304c6a67794e5567324e7934774e6a6735566a51314d5334354e6b67334e5334354e6a5931566a51314e5334774d6a64494e6a4d754e4441354d6c704e4f5445754f4463334e5341304d7a51754f44493153446b314c6a557a4e7a4a574e4451344c6a41794e454d354e5334314d7a6379494451304f5334304e7941354e5334784f545579494451314d4334334e444d674f5451754e5445784d7941304e5445754f445178517a6b7a4c6a677a4d7a6b674e4455794c6a6b7a4f5341354d6934344f444130494451314d7934334f5467674f5445754e6a55774e6941304e5451754e444532517a6b774c6a51794d446b674e4455314c6a41794e7941344f4334354f4451674e4455314c6a4d7a4d7941344e79347a4e4341304e5455754d7a4d7a517a67314c6a59344f544d674e4455314c6a4d7a4d7941344e4334794e446b79494451314e5334774d6a63674f444d754d4445354e4341304e5451754e444532517a67784c6a63344f5463674e44557a4c6a63354f4341344d4334344d7a5978494451314d6934354d7a6b674f4441754d5455344f4341304e5445754f445178517a63354c6a51344d5451674e4455774c6a63304d7941334f5334784e444934494451304f5334304e7941334f5334784e444934494451304f4334774d6a52574e444d304c6a67794e5567344d6934344d444930566a51304e7934334d5468444f4449754f4441794e4341304e4467754e5459674f4449754f5467324e5341304e446b754d7a41354944677a4c6a4d314e4467674e4451354c6a6b324e304d344d7934334d6a6b32494451314d4334324d6a55674f4451754d6a55314e7941304e5445754d545178494467304c6a6b7a4d7a45674e4455784c6a55784e6b4d344e5334324d544130494451314d5334344f4451674f4459754e4445794e7941304e5449754d445934494467334c6a4d30494451314d6934774e6a68444f4467754d6a59334d6941304e5449754d445934494467354c6a41324f5455674e4455784c6a67344e4341344f5334334e445934494451314d5334314d545a444f5441754e444d774f4341304e5445754d54517849446b774c6a6b314e6a6b674e4455774c6a59794e5341354d53347a4d6a5578494451304f5334354e6a64444f5445754e6a6b7a4e4341304e446b754d7a413549446b784c6a67334e7a55674e4451344c6a553249446b784c6a67334e7a55674e4451334c6a63784f4659304d7a51754f444931576b30784d444d754d5463314944517a4e4334344d6a56574e4455314c6a41794e3067354f5334314d545135566a517a4e4334344d6a56494d54417a4c6a45334e56704e4d54457a4c6a6b344d7941304e5455754d444933534445774e7934784d7a68574e444d304c6a67794e5567784d5451754d544978517a45784e6934784d6a63674e444d304c6a67794e5341784d5463754f4455674e444d314c6a497a494445784f5334794f5341304d7a59754d444d35517a45794d4334334d7a63674e444d324c6a67304d5341784d6a45754f4451344944517a4e7934354f5455674d5449794c6a59794e4341304d7a6b754e544178517a45794d793430494451304d5334774d4463674d54497a4c6a63344f4341304e4449754f444135494445794d7934334f4467674e4451304c6a6b774e304d784d6a4d754e7a6734494451304e7934774d5445674d54497a4c6a4d354e7941304e4467754f444535494445794d6934324d5455674e4455774c6a4d7a4d6b4d784d6a45754f444d35494451314d5334344e4451674d5449774c6a63784e7941304e544d754d444131494445784f5334794e5445674e44557a4c6a67784e454d784d5463754e7a6b78494451314e4334324d6a4d674d5445324c6a417a4e5341304e5455754d444933494445784d7934354f444d674e4455314c6a41794e31704e4d5445774c6a63354e7941304e5445754f445978534445784d7934344d445a444d5445314c6a49784d7941304e5445754f445978494445784e69347a4f4463674e4455784c6a59774e4341784d5463754d7a4933494451314d5334774f544a444d5445344c6a49324f4341304e5441754e546379494445784f4334354e7a55674e4451354c6a63354f5341784d546b754e445134494451304f4334334e7a4e444d5445354c6a6b794d6941304e4463754e7a5178494445794d4334784e5467674e4451324c6a51314d6941784d6a41754d545534494451304e4334354d4464444d5449774c6a45314f4341304e444d754d7a5978494445784f5334354d6a49674e4451794c6a41334f5341784d546b754e445134494451304d5334774e6b4d784d5467754f546331494451304d4334774d7a51674d5445344c6a49334e4341304d7a6b754d6a5934494445784e79347a4e4463674e444d344c6a63324d554d784d5459754e4449324944517a4f4334794e4467674d5445314c6a49344d6941304d7a63754f546b79494445784d7934354d5451674e444d334c6a6b354d6b67784d5441754e7a6b33566a51314d5334344e6a46614969426d6157787350534a3361476c305a53497650676f38636d566a64434234505349794e7a63754d444933496942355053497a4f4334784f54517a4969423361575230614430694e546b754e7a63334f434967614756705a3268305053497a4f4334344d7a4d7a49694279654430694d546b754e4445324e7949675a6d6c7362443069596d78685932736949475a70624777746233426859326c30655430694d4334794969382b436a78775958526f49475139496b30794f5451754e7a49674e5441754f5467314d5659324d7934324d54457a534449354d6934344e7a64574e5441754f5467314d5567794f5451754e7a4a6154544d774e53347a4d4445674e5451754d5451784e6b777a4d4445754f4459334944597a4c6a59784d544e494d6a6b354c6a67354e4577794f5459754e445530494455304c6a45304d545a494d6a6b344c6a517a4d30777a4d4441754f444d78494459784c6a51794f446c494d7a41774c6a6b7a54444d774d79347a4d6a49674e5451754d5451784e6b677a4d4455754d7a4178576b307a4d4467754f446333494455774c6a6b344e5446574e6a4d754e6a45784d30677a4d4463754d444d7a566a55774c6a6b344e5446494d7a41344c6a67334e31704e4d7a49774c6a63784e7941314d4334354f445578566a597a4c6a59784d544e494d7a45344c6a67774e6c59314d6934344f54597a53444d784f4334334d7a4a4d4d7a45314c6a63784d5341314e4334344e6a6b78566a557a4c6a41304e444a4d4d7a45344c6a67324d5341314d4334354f44557853444d794d4334334d5464614969426d6157787350534a3361476c305a53497650676f385a79426d615778305a584939496e56796243676a5a6d6c73644756794e46396b587a45784e544933587a49324f5455324b53492b436a78775958526f49475a7062477774636e56735a5430695a585a6c626d396b5a43496759327870634331796457786c50534a6c646d56756232526b4969426b50534a4e4d6a67784c6a4d354f5341794d6a55754e446b79517a49334e4334774e5341794d5441754d544934494449324e5334304f4341784f5455754d7a6378494449314e5334334e7a45674d5467784c6a4d324d5577794e5449754e6a51674d5463324c6a67344e6b4d794e4467754e7a6730494445334d53347a4d6a55674d6a517a4c6a637a4d5341784e6a59754e6a67334944497a4e7934344e4463674d54597a4c6a4d78517a497a4d5334354e6a51674d5455354c6a6b7a4d7941794d6a55754d7a6b32494445314e7934354d4449674d6a45344c6a59794e4341784e5463754d7a5930544449784d7934784d6a59674d5455324c6a6b794e454d784f5459754d445934494445314e5334314e6a49674d5463344c6a6b794f5341784e5455754e545979494445324d5334344e7a49674d5455324c6a6b794e4577784e5459754d7a6330494445314e79347a4e6a52444d5451354c6a59774d6941784e5463754f544179494445304d7934774d7a55674d5455354c6a6b7a4d7941784d7a63754d545578494445324d79347a4d554d784d7a45754d6a5933494445324e6934324f4463674d5449324c6a49784e4341784e7a45754d7a4931494445794d69347a4e5467674d5463324c6a67344e6b77784d546b754d6a4933494445344d5334304d4446444d5441354c6a55784f4341784f5455754e444578494445774d4334354e4467674d6a45774c6a45324f4341354d7934314f546b32494449794e5334314d7a4a4d4f5445754d6a4d7a4d6941794d7a41754e446333517a67344c6a4d784e7a55674d6a4d324c6a55334e7941344e6934344d445133494449304d7934794e4459674f4459754f4441304e7941794e5442444f4459754f4441304e7941794e5459754e7a557a494467344c6a4d784e7a55674d6a597a4c6a51794d6941354d5334794d7a4d79494449324f5334314d6a4a4d4f544d754e546b354e6941794e7a51754e445933517a45774d4334354e4467674d6a67354c6a677a4d6941784d446b754e54453449444d774e4334314f446b674d5445354c6a49794e79417a4d5467754e546b34544445794d69347a4e5467674d7a497a4c6a45784d304d784d6a59754d6a453049444d794f4334324e7a51674d544d784c6a49324e79417a4d7a4d754d7a45794944457a4e7934784e5445674d7a4d324c6a59344f554d784e444d754d444d3149444d304d4334774e6a59674d5451354c6a59774d69417a4e4449754d446b34494445314e69347a4e7a51674d7a51794c6a597a4e5577784e6a45754f44637949444d304d7934774e7a5a444d5463344c6a6b794f53417a4e4451754e444d33494445354e6934774e6a67674d7a51304c6a517a4e7941794d544d754d54493249444d304d7934774e7a5a4d4d6a45344c6a59794e43417a4e4449754e6a4d31517a49794e5334304d4445674d7a51794c6a41354944497a4d5334354e7a49674d7a51774c6a41314944497a4e7934344e5455674d7a4d324c6a59324d6b4d794e444d754e7a51674d7a4d7a4c6a49334e4341794e4467754e7a6b674d7a49344c6a59794e5341794e5449754e6a51674d7a497a4c6a41314d3077794e5455754e7a637849444d784f4334314d7a68444d6a59314c6a513449444d774e4334314d6a6b674d6a63304c6a4131494449344f5334334e7a49674d6a67784c6a4d354f5341794e7a51754e444133544449344d7934334e6a55674d6a59354c6a51324d6b4d794f4459754e6a67674d6a597a4c6a4d324d6941794f4467754d546b30494449314e6934324f544d674d6a67344c6a45354e4341794e446b754f544d35517a49344f4334784f5451674d6a517a4c6a45344e6941794f4459754e6a67674d6a4d324c6a55784e7941794f444d754e7a59314944497a4d4334304d54644d4d6a67784c6a4d354f5341794d6a55754e446b79576949675a6d6c736244306964326870644755694c7a344b5043396e50676f385a79426d615778305a584939496e56796243676a5a6d6c73644756794e56396b587a45784e544933587a49324f5455324b53492b436a78775958526f49475139496b30794e4463754f544532494449304e79347a4f4452444d6a51324c6a59304d5341794d5463754d545931494449794d79347a4e6a6b674d546b794c6a59324e4341784f544d754e7a63674d5467354c6a59784d304d784f5441754d7a4d31494445344f5334794e5463674d5467334c6a55794f4341784f5449754d544130494445344e7934314d6a67674d546b314c6a55334d3159794d5449754d7a4a444d5467334c6a55794f4341794d5455754e7a6734494445354d43347a4e5451674d6a45344c6a557a4e5341784f544d754e7a5178494449784f5334794d546c444d6a41314c6a4d324d6941794d6a45754e546330494449784e4334324e5341794d7a41754e4341794d5463754e7a457a494449304d5334334f5452444d6a45344c6a6b314d7941794e4445754d7a5935494449794d43347a4e6a51674d6a51784c6a45774f5341794d6a45754f546b30494449304d5334784d444e444d6a49334c6a5979494449304d5334784d6a6b674d6a4d774c6a59314e5341794e4451754d6a55784944497a4d7934774d6941794e4459754e7a6332517a497a4e5334794d7a49674d6a51354c6a45774e6941794d7a59754f546b32494449314d4334354d7a55674d6a51774c6a59354e6941794e5441754f546735517a49304e4334784e4449674d6a55774c6a6b354e5341794e4455754f544131494449304f5334304d7a4d674d6a51334c6a6b784e6941794e4463754d7a6730576949675a6d6c7362443069497a4d324e6b5a475269497650676f38634746306143426b50534a4e4d5459774c6a63354e4341784f5455754e544d33517a45324e4334324d4463674d546b7a4c6a59304e7941784e6a67754e7a5935494445354e6934324e5463674d5459344c6a63324f5341794d4441754f544934566a49304d5334794e6a68444d54597a4c6a457a4f5341794e4445754d7a4134494445324d4334784d7a59674d6a51304c6a4d324f5341784e5463754e7a597a494449304e6934344e546c4d4d5455334c6a63784d7941794e4459754f5446444d5455314c6a51354e7941794e446b754d546732494445314d7934334d7a63674d6a55774c6a6b354e5341784e5441754d444d674d6a55774c6a6b344f554d784e4459754d7a4d674d6a55774c6a6b7a4e5341784e4451754e545931494449304f5334784d4459674d5451794c6a4d314e4341794e4459754e7a6332517a457a4f5334354f446b674d6a51304c6a49314d5341784d7a59754f54557a494449304d5334784d6a6b674d544d784c6a4d794f4341794e4445754d54417a517a45794f5334354e5467674d6a51784c6a45774f4341784d6a67754e7a5130494449304d5334794f5449674d5449334c6a59314e6941794e4445754e6a417a517a457a4d4334304e4467674d6a49784c6a4d7a4e4341784e444d754d6a417a494449774e4334794e6a4d674d5459774c6a63354e4341784f5455754e544d33576949675a6d6c7362443069497a4d324e6b5a475269497650676f38634746306143426b50534a4e4d546b7a4c6a63324f53417a4d5441754d7a6733517a45354d43347a4d7a55674d7a45774c6a63304d5341784f4463754e54493349444d774e7934344f5459674d5467334c6a55794e79417a4d4451754e444933566a49344e7934324f4446444d5467334c6a55794e7941794f4451754d6a4530494445354d43347a4e544d674d6a67784c6a51324e5341784f544d754e7a51674d6a67774c6a63344d554d794d4467754d444d674d6a63334c6a67344e6941794d5467754e7a6b78494449324e5334794d4459674d6a45344c6a63354d5341794e5442444d6a45344c6a63354d5341794e446b754f445979494449784f4334334f5341794e446b754e7a4930494449784f4334334f4467674d6a51354c6a55344e6b4d794d546b754e6a6b32494449304f5334794d546b674d6a49774c6a637a4e5341794e446b754d444135494449794d6934774d4445674d6a51354c6a41784d554d794d6a55754e7a4178494449304f5334774e6a55674d6a49334c6a51324e6941794e5441754f446b31494449794f5334324e7a63674d6a557a4c6a49794e454d794d7a49754d445179494449314e5334334e446b674d6a4d314c6a41334f4341794e5467754f446378494449304d4334334d444d674d6a55344c6a67354e304d794e444d754e546b33494449314f4334344f4459674d6a51314c6a63354f5341794e5467754d446334494449304e7934314e7a67674d6a55324c6a6b314e304d794e4451754d7a6331494449344e5334784e5451674d6a49784c6a6b7a4e79417a4d4463754e446730494445354d7934334e6a6b674d7a45774c6a4d344e316f6949475a706247773949694d774d445247515455694c7a344b50484268644767675a443069545445794e7934774f4449674d6a55774c6a45774e554d784d6a63754d544979494449334d7934354e5341784e4441754f445135494449354e4334314e7941784e6a41754e7a6b7a49444d774e4334304e6a4e444d5459304c6a59774e69417a4d4459754d7a557a494445324f4334334e6a67674d7a417a4c6a4d304d7941784e6a67754e7a5934494449354f5334774e7a4a574d6a51354c6a45334e6b4d784e6a55754d446b35494449304f5334784f446b674d54597a4c6a4d304e6941794e5441754f546b78494445324d5334784e4445674d6a557a4c6a49314e6b77784e6a45754d446b78494449314d79347a4d4464444d5455344c6a63784d5341794e5455754f44417a494445314e5334324f5467674d6a55344c6a67334e5341784e5441754d444d33494449314f4334344f5464444d5451304c6a51784d5341794e5467754f446378494445304d53347a4e7a59674d6a55314c6a63304f5341784d7a6b754d444578494449314d7934794d6a52444d544d324c6a63354f5341794e5441754f446b314944457a4e5334774d7a55674d6a51354c6a41324e5341784d7a45754d7a4d31494449304f5334774d5446444d5449354c6a55314f4341794e446b754d444134494445794f4334794d6a6b674d6a51354c6a51794d6941784d6a63754d446779494449314d4334784d4456614969426d615778735053496a4d444130526b45314969382b436a77765a7a344b5043396e50676f385a47566d637a344b50475a706248526c636942705a4430695a6d6c73644756794d46396d587a45784e544933587a49324f54553249694234505349744d6a67304c6a51314d694967655430694c544d314e7934334e7a4969494864705a48526f505349784d4441774c6a41324969426f5a576c6e61485139496a6b354e7934304f44676949475a706248526c636c56756158527a50534a31633256795533426859325650626c567a5a5349675932397362334974615735305a584a776232786864476c766269316d615778305a584a7a50534a7a556b6443496a344b50475a6c526d7876623251675a6d7876623251746233426859326c30655430694d434967636d567a6457783050534a4359574e725a334a766457356b535731685a325647615867694c7a344b50475a6c516d786c626d51676257396b5a543069626d39796257467349694270626a306955323931636d4e6c52334a6863476870597949676157347950534a4359574e725a334a766457356b535731685a3256476158676949484a6c633356736444306963326868634755694c7a344b50475a6c5232463163334e70595735436248567949484e305a45526c646d6c6864476c76626a30694d54457a4c6a41344e794967636d567a6457783050534a6c5a6d5a6c5933517858325a76636d566e636d3931626d524362485679587a45784e544933587a49324f5455324969382b436a77765a6d6c736447567950676f385a6d6c736447567949476c6b50534a6d615778305a58497858325a664d5445314d6a64664d6a59354e54596949486739496a45354f5334304f446b6949486b39496a49354c6a41774d6a4569494864705a48526f5053497a4d7a49754e6a497a4969426f5a576c6e61485139496a4d7a4d6934324d6a456949475a706248526c636c56756158527a50534a31633256795533426859325650626c567a5a5349675932397362334974615735305a584a776232786864476c766269316d615778305a584a7a50534a7a556b6443496a344b50475a6c526d7876623251675a6d7876623251746233426859326c30655430694d434967636d567a6457783050534a4359574e725a334a766457356b535731685a325647615867694c7a344b50475a6c516d786c626d51676257396b5a543069626d39796257467349694270626a306955323931636d4e6c52334a6863476870597949676157347950534a4359574e725a334a766457356b535731685a3256476158676949484a6c633356736444306963326868634755694c7a344b50475a6c5232463163334e70595735436248567949484e305a45526c646d6c6864476c76626a30694d7a49754d4449324f434967636d567a6457783050534a6c5a6d5a6c5933517858325a76636d566e636d3931626d524362485679587a45784e544933587a49324f5455324969382b436a77765a6d6c736447567950676f385a6d6c736447567949476c6b50534a6d615778305a58497958325a664d5445314d6a64664d6a59354e54596949486739496930784d7934344f446b7a496942355053497a4d546b754e7a6b784969423361575230614430694e5455754d6a41344d794967614756705a326830505349314e5334794d44677a4969426d615778305a584a56626d6c30637a306964584e6c636c4e7759574e6c543235566332556949474e76624739794c576c75644756796347397359585270623234745a6d6c7364475679637a306963314a485169492b436a786d5a555a736232396b49475a736232396b4c57397759574e7064486b39496a416949484a6c6333567364443069516d466a61326479623356755a456c745957646c526d6c344969382b436a786d5a554a735a57356b494731765a475539496d3576636d31686243496761573439496c4e7664584a6a5a5564795958426f61574d6949476c754d6a3069516d466a61326479623356755a456c745957646c526d6c34496942795a584e3162485139496e4e6f5958426c4969382b436a786d5a55646864584e7a61574675516d78316369427a644752455a585a705958527062323439496a55754d6a41344d7a4d6949484a6c63335673644430695a575a6d5a574e304d56396d62334a6c5a334a766457356b516d7831636c38784d5455794e3138794e6a6b314e69497650676f384c325a706248526c636a344b50475a706248526c636942705a4430695a6d6c73644756794d313969587a45784e544933587a49324f54553249694234505349744d7a67754d546b324d694967655430694c544d344c6a45354e444969494864705a48526f505349304e5445754d7a67344969426f5a576c6e61485139496a55334e69347a4f44676949475a706248526c636c56756158527a50534a31633256795533426859325650626c567a5a5349675932397362334974615735305a584a776232786864476c766269316d615778305a584a7a50534a7a556b6443496a344b50475a6c526d7876623251675a6d7876623251746233426859326c30655430694d434967636d567a6457783050534a4359574e725a334a766457356b535731685a325647615867694c7a344b50475a6c5232463163334e70595735436248567949476c7550534a4359574e725a334a766457356b535731685a3256476158676949484e305a45526c646d6c6864476c76626a30694d6a63754e7a63334f43497650676f385a6d56446232317762334e70644755676157347950534a5462335679593256426248426f595349676233426c636d463062334939496d6c75496942795a584e3162485139496d566d5a6d566a64444666596d466a61326479623356755a454a7364584a664d5445314d6a64664d6a59354e5459694c7a344b50475a6c516d786c626d51676257396b5a543069626d39796257467349694270626a306955323931636d4e6c52334a6863476870597949676157347950534a6c5a6d5a6c5933517858324a685932746e636d3931626d524362485679587a45784e544933587a49324f545532496942795a584e3162485139496e4e6f5958426c4969382b436a77765a6d6c736447567950676f385a6d6c736447567949476c6b50534a6d615778305a584930583252664d5445314d6a64664d6a59354e54596949486739496a4d7a4c6a4d7a4d6a556949486b39496a45774e5334354d444969494864705a48526f5053497a4d4467754d7a4d314969426f5a576c6e61485139496a49354e5334784d7a6b6949475a706248526c636c56756158527a50534a31633256795533426859325650626c567a5a5349675932397362334974615735305a584a776232786864476c766269316d615778305a584a7a50534a7a556b6443496a344b50475a6c526d7876623251675a6d7876623251746233426859326c30655430694d434967636d567a6457783050534a4359574e725a334a766457356b535731685a325647615867694c7a344b50475a6c5132397362334a4e595852796158676761573439496c4e7664584a6a5a55467363476868496942306558426c50534a74595852796158676949485a686248566c637a30694d434177494441674d434177494441674d434177494441674d434177494441674d434177494441674d434177494441674d5449334944416949484a6c6333567364443069614746795a454673634768684969382b436a786d5a55396d5a6e4e6c6443426b655430694d7934304e7a49794d69497650676f385a6d56485958567a63326c68626b4a73645849676333526b524756326157463061573975505349794e6934334d7a59784969382b436a786d5a554e766258427663326c305a534270626a4939496d6868636d52426248426f595349676233426c636d463062334939496d39316443497650676f385a6d564462327876636b316864484a70654342306558426c50534a74595852796158676949485a686248566c637a30694d434177494441674d434178494441674d434177494441674d534177494441674d434177494445674d434177494441674d43347a4e5341774969382b436a786d5a554a735a57356b494731765a475539496d3576636d3168624349676157347950534a4359574e725a334a766457356b535731685a3256476158676949484a6c63335673644430695a575a6d5a574e304d56396b636d3977553268685a473933587a45784e544933587a49324f5455324969382b436a786d5a554a735a57356b494731765a475539496d3576636d31686243496761573439496c4e7664584a6a5a5564795958426f61574d6949476c754d6a30695a575a6d5a574e304d56396b636d3977553268685a473933587a45784e544933587a49324f545532496942795a584e3162485139496e4e6f5958426c4969382b436a77765a6d6c736447567950676f385a6d6c736447567949476c6b50534a6d615778305a584931583252664d5445314d6a64664d6a59354e54596949486739496a51774c6a49334e6a556949486b39496a45774e4334784e6a5969494864705a48526f505349794f5451754e4451334969426f5a576c6e61485139496a49354e4334304e44556949475a706248526c636c56756158527a50534a31633256795533426859325650626c567a5a5349675932397362334974615735305a584a776232786864476c766269316d615778305a584a7a50534a7a556b6443496a344b50475a6c526d7876623251675a6d7876623251746233426859326c30655430694d434967636d567a6457783050534a4359574e725a334a766457356b535731685a325647615867694c7a344b50475a6c5132397362334a4e595852796158676761573439496c4e7664584a6a5a55467363476868496942306558426c50534a74595852796158676949485a686248566c637a30694d434177494441674d434177494441674d434177494441674d434177494441674d434177494441674d434177494441674d5449334944416949484a6c6333567364443069614746795a454673634768684969382b436a786d5a55396d5a6e4e6c6443426b655430694d53347a4f4467344f53497650676f385a6d56485958567a63326c68626b4a73645849676333526b524756326157463061573975505349304d7934304d4449344969382b436a786d5a554e766258427663326c305a534270626a4939496d6868636d52426248426f595349676233426c636d463062334939496d39316443497650676f385a6d564462327876636b316864484a70654342306558426c50534a74595852796158676949485a686248566c637a30694d434177494441674d4341774c6a49354f44417a4f534177494441674d434177494441754e4455304f544179494441674d434177494441674d4334354e6a51334d4459674d434177494441674d4334304e5341774969382b436a786d5a554a735a57356b494731765a475539496d3576636d3168624349676157347950534a4359574e725a334a766457356b535731685a3256476158676949484a6c63335673644430695a575a6d5a574e304d56396b636d3977553268685a473933587a45784e544933587a49324f5455324969382b436a786d5a554a735a57356b494731765a475539496d3576636d31686243496761573439496c4e7664584a6a5a5564795958426f61574d6949476c754d6a30695a575a6d5a574e304d56396b636d3977553268685a473933587a45784e544933587a49324f545532496942795a584e3162485139496e4e6f5958426c4969382b436a77765a6d6c736447567950676f3862476c755a57467952334a685a476c6c626e516761575139496e4268615735304d4639736157356c59584a664d5445314d6a64664d6a59354e54596949486778505349744d7a6b754e6a4d79496942354d5430694d7a55754e44497a4e69496765444939496a49344d6934334d54496949486b79505349784e7a45754d4451354969426e636d466b61575675644656756158527a50534a31633256795533426859325650626c567a5a53492b436a787a6447397749484e3062334174593239736233493949694d7a516a6779526a59694c7a344b50484e306233416762325a6d63325630505349784969427a644739774c574e76624739795053496a4d3049344d6b59324969382b436a777662476c755a57467952334a685a476c6c626e512b436a78736157356c59584a48636d466b61575675644342705a44306963474670626e517858327870626d5668636c38784d5455794e3138794e6a6b314e69496765444539496930304e7934794d6a516949486b78505349304d7a49754d6a6b79496942344d6a30694e4441794c6a49314e53496765544939496a67354c6a55344d7a596949476479595752705a5735305657357064484d39496e567a5a584a546347466a5a55397556584e6c496a344b50484e3062334167633352766343316a62327876636a3069643268706447556949484e30623341746233426859326c30655430694d4334784969382b436a787a644739774947396d5a6e4e6c644430694d4334314969427a644739774c574e766247397950534a3361476c305a53496763335276634331766347466a61585235505349774c6a41304969382b436a787a644739774947396d5a6e4e6c644430694d534967633352766343316a62327876636a3069643268706447556949484e30623341746233426859326c30655430694d4334784969382b436a777662476c755a57467952334a685a476c6c626e512b436a786a62476c7755474630614342705a44306959327870634442664d5445314d6a64664d6a59354e54596950676f38636d566a6443423361575230614430694d7a63314969426f5a576c6e61485139496a55774d4349675a6d6c736244306964326870644755694c7a344b5043396a62476c77554746306144344b5043396b5a575a7a50676f384c334e325a7a344b000000000000000000000000000000000000000000000000
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101a35760003560e01c80634f6ccce7116100ee578063a217fddf11610097578063c87b56dd11610071578063c87b56dd146103b5578063d5391393146103c8578063d547741f146103ef578063e985e9c51461040257600080fd5b8063a217fddf14610387578063a22cb4651461038f578063b88d4fde146103a257600080fd5b806370a08231116100c857806370a082311461032657806391d148541461033957806395d89b411461037f57600080fd5b80634f6ccce7146102ed5780636352211e146103005780636a6278421461031357600080fd5b8063248a9ca3116101505780632f745c591161012a5780632f745c59146102b457806336568abe146102c757806342842e0e146102da57600080fd5b8063248a9ca3146102575780632c78470c1461027a5780632f2ff15d146102a157600080fd5b8063095ea7b311610181578063095ea7b31461021d57806318160ddd1461023257806323b872dd1461024457600080fd5b806301ffc9a7146101a857806306fdde03146101d0578063081812fc146101e5575b600080fd5b6101bb6101b6366004612516565b61044b565b60405190151581526020015b60405180910390f35b6101d861045c565b6040516101c791906125a1565b6101f86101f33660046125b4565b6104ee565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101c7565b61023061022b3660046125f6565b610522565b005b6008545b6040519081526020016101c7565b610230610252366004612620565b6106b3565b6102366102653660046125b4565b6000908152600a602052604090206001015490565b6102367f000000000000000000000000000000000000000000000000000000000000000181565b6102306102af36600461265c565b610754565b6102366102c23660046125f6565b610779565b6102306102d536600461265c565b610848565b6102306102e8366004612620565b6108fb565b6102366102fb3660046125b4565b610916565b6101f861030e3660046125b4565b6109d4565b610236610321366004612688565b610a60565b610236610334366004612688565b610aac565b6101bb61034736600461265c565b6000918252600a6020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b6101d8610b7a565b610236600081565b61023061039d3660046126a3565b610b89565b6102306103b036600461270e565b610b94565b6101d86103c33660046125b4565b610c3c565b6102367f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6102306103fd36600461265c565b610d12565b6101bb610410366004612808565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205460ff1690565b600061045682610d37565b92915050565b60606000805461046b90612832565b80601f016020809104026020016040519081016040528092919081815260200182805461049790612832565b80156104e45780601f106104b9576101008083540402835291602001916104e4565b820191906000526020600020905b8154815290600101906020018083116104c757829003601f168201915b5050505050905090565b60006104f982610d8d565b5060009081526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b600061052d826109d4565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036105ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f720000000000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff8216148061061857506106188133610410565b6106a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c00000060648201526084016105e6565b6106ae8383610e1b565b505050565b6106bd3382610ebb565b610749576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206f7220617070726f7665640000000000000000000000000000000000000060648201526084016105e6565b6106ae838383610f7b565b6000828152600a602052604090206001015461076f81611283565b6106ae838361128d565b600061078483610aac565b8210610812576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201527f74206f6620626f756e647300000000000000000000000000000000000000000060648201526084016105e6565b5073ffffffffffffffffffffffffffffffffffffffff919091166000908152600660209081526040808320938352929052205490565b73ffffffffffffffffffffffffffffffffffffffff811633146108ed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084016105e6565b6108f78282611381565b5050565b6106ae83838360405180602001604052806000815250610b94565b600061092160085490565b82106109af576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201527f7574206f6620626f756e6473000000000000000000000000000000000000000060648201526084016105e6565b600882815481106109c2576109c261287f565b90600052602060002001549050919050565b60008181526002602052604081205473ffffffffffffffffffffffffffffffffffffffff1680610456576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e204944000000000000000060448201526064016105e6565b60007f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6610a8c81611283565b600854610a9a9060016128dd565b9150610aa6838361143c565b50919050565b600073ffffffffffffffffffffffffffffffffffffffff8216610b51576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f74206120766160448201527f6c6964206f776e6572000000000000000000000000000000000000000000000060648201526084016105e6565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b60606001805461046b90612832565b6108f733838361166f565b610b9e3383610ebb565b610c2a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206f7220617070726f7665640000000000000000000000000000000000000060648201526084016105e6565b610c368484848461179c565b50505050565b6060811580610c4c575060085482115b15610c6557505060408051602081019091526000815290565b610cec610c917f000000000000000000000000000000000000000000000000000000000000000161183f565b610c9a8461183f565b610cc37f000000000000000000000000000000000000000000000000000000000000000161183f565b600b604051602001610cd894939291906129c4565b6040516020818303038152906040526118fd565b604051602001610cfc9190612b58565b6040516020818303038152906040529050919050565b6000828152600a6020526040902060010154610d2d81611283565b6106ae8383611381565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b000000000000000000000000000000000000000000000000000000001480610456575061045682611a50565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff16610e18576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e204944000000000000000060448201526064016105e6565b50565b600081815260046020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091558190610e75826109d4565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080610ec7836109d4565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480610f35575073ffffffffffffffffffffffffffffffffffffffff80821660009081526005602090815260408083209388168352929052205460ff165b80610f7357508373ffffffffffffffffffffffffffffffffffffffff16610f5b846104ee565b73ffffffffffffffffffffffffffffffffffffffff16145b949350505050565b8273ffffffffffffffffffffffffffffffffffffffff16610f9b826109d4565b73ffffffffffffffffffffffffffffffffffffffff161461103e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e657200000000000000000000000000000000000000000000000000000060648201526084016105e6565b73ffffffffffffffffffffffffffffffffffffffff82166110e0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016105e6565b6110ed8383836001611aa6565b8273ffffffffffffffffffffffffffffffffffffffff1661110d826109d4565b73ffffffffffffffffffffffffffffffffffffffff16146111b0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e657200000000000000000000000000000000000000000000000000000060648201526084016105e6565b600081815260046020908152604080832080547fffffffffffffffffffffffff000000000000000000000000000000000000000090811690915573ffffffffffffffffffffffffffffffffffffffff8781168086526003855283862080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01905590871680865283862080546001019055868652600290945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b610e188133611ab2565b6000828152600a6020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff166108f7576000828152600a6020908152604080832073ffffffffffffffffffffffffffffffffffffffff85168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556113233390565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000828152600a6020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16156108f7576000828152600a6020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b73ffffffffffffffffffffffffffffffffffffffff82166114b9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016105e6565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff1615611545576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016105e6565b611553600083836001611aa6565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff16156115df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016105e6565b73ffffffffffffffffffffffffffffffffffffffff8216600081815260036020908152604080832080546001019055848352600290915280822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611704576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016105e6565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6117a7848484610f7b565b6117b384848484611b6c565b610c36576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016105e6565b6060600061184c83611d5f565b600101905060008167ffffffffffffffff81111561186c5761186c6126df565b6040519080825280601f01601f191660200182016040528015611896576020820181803683370190505b5090508181016020015b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85049450846118a057509392505050565b6060815160000361191c57505060408051602081019091526000815290565b6000604051806060016040528060408152602001612d4e604091399050600060038451600261194b91906128dd565b6119559190612b9d565b611960906004612bd8565b67ffffffffffffffff811115611978576119786126df565b6040519080825280601f01601f1916602001820160405280156119a2576020820181803683370190505b509050600182016020820185865187015b80821015611a0e576003820191508151603f8160121c168501518453600184019350603f81600c1c168501518453600184019350603f8160061c168501518453600184019350603f81168501518453506001830192506119b3565b5050600386510660018114611a2a5760028114611a3d57611a45565b603d6001830353603d6002830353611a45565b603d60018303535b509195945050505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f780e9d63000000000000000000000000000000000000000000000000000000001480610456575061045682611e41565b610c3684848484611f24565b6000828152600a6020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff166108f757611af2816120c8565b611afd8360206120e7565b604051602001611b0e929190612bef565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a00000000000000000000000000000000000000000000000000000000082526105e6916004016125a1565b600073ffffffffffffffffffffffffffffffffffffffff84163b15611d54576040517f150b7a0200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063150b7a0290611be3903390899088908890600401612c70565b6020604051808303816000875af1925050508015611c3c575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252611c3991810190612cb9565b60015b611d09573d808015611c6a576040519150601f19603f3d011682016040523d82523d6000602084013e611c6f565b606091505b508051600003611d01576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016105e6565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a0200000000000000000000000000000000000000000000000000000000149050610f73565b506001949350505050565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310611da8577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310611dd4576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310611df257662386f26fc10000830492506010015b6305f5e1008310611e0a576305f5e100830492506008015b6127108310611e1e57612710830492506004015b60648310611e30576064830492506002015b600a83106104565760010192915050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd000000000000000000000000000000000000000000000000000000001480611ed457507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061045657507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610456565b6001811115611fb5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f455243373231456e756d657261626c653a20636f6e736563757469766520747260448201527f616e7366657273206e6f7420737570706f72746564000000000000000000000060648201526084016105e6565b8173ffffffffffffffffffffffffffffffffffffffff851661201e5761201981600880546000838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b61205b565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161461205b5761205b8582612331565b73ffffffffffffffffffffffffffffffffffffffff84166120845761207f816123e8565b6120c1565b8473ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146120c1576120c18482612497565b5050505050565b606061045673ffffffffffffffffffffffffffffffffffffffff831660145b606060006120f6836002612bd8565b6121019060026128dd565b67ffffffffffffffff811115612119576121196126df565b6040519080825280601f01601f191660200182016040528015612143576020820181803683370190505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061217a5761217a61287f565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f7800000000000000000000000000000000000000000000000000000000000000816001815181106121dd576121dd61287f565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506000612219846002612bd8565b6122249060016128dd565b90505b60018111156122c1577f303132333435363738396162636465660000000000000000000000000000000085600f16601081106122655761226561287f565b1a60f81b82828151811061227b5761227b61287f565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049490941c936122ba81612cd6565b9050612227565b50831561232a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016105e6565b9392505050565b6000600161233e84610aac565b6123489190612d0b565b6000838152600760205260409020549091508082146123a85773ffffffffffffffffffffffffffffffffffffffff841660009081526006602090815260408083208584528252808320548484528184208190558352600790915290208190555b50600091825260076020908152604080842084905573ffffffffffffffffffffffffffffffffffffffff9094168352600681528383209183525290812055565b6008546000906123fa90600190612d0b565b600083815260096020526040812054600880549394509092849081106124225761242261287f565b9060005260206000200154905080600883815481106124435761244361287f565b600091825260208083209091019290925582815260099091526040808220849055858252812055600880548061247b5761247b612d1e565b6001900381819060005260206000200160009055905550505050565b60006124a283610aac565b73ffffffffffffffffffffffffffffffffffffffff9093166000908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114610e1857600080fd5b60006020828403121561252857600080fd5b813561232a816124e8565b60005b8381101561254e578181015183820152602001612536565b50506000910152565b6000815180845261256f816020860160208601612533565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061232a6020830184612557565b6000602082840312156125c657600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff811681146125f157600080fd5b919050565b6000806040838503121561260957600080fd5b612612836125cd565b946020939093013593505050565b60008060006060848603121561263557600080fd5b61263e846125cd565b925061264c602085016125cd565b9150604084013590509250925092565b6000806040838503121561266f57600080fd5b8235915061267f602084016125cd565b90509250929050565b60006020828403121561269a57600080fd5b61232a826125cd565b600080604083850312156126b657600080fd5b6126bf836125cd565b9150602083013580151581146126d457600080fd5b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806000806080858703121561272457600080fd5b61272d856125cd565b935061273b602086016125cd565b925060408501359150606085013567ffffffffffffffff8082111561275f57600080fd5b818701915087601f83011261277357600080fd5b813581811115612785576127856126df565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156127cb576127cb6126df565b816040528281528a60208487010111156127e457600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b6000806040838503121561281b57600080fd5b612824836125cd565b915061267f602084016125cd565b600181811c9082168061284657607f821691505b602082108103610aa6577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115610456576104566128ae565b8054600090600181811c908083168061290a57607f831692505b60208084108203612944577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b818015612958576001811461298b576129b8565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00861689528415158502890196506129b8565b60008881526020902060005b868110156129b05781548b820152908501908301612997565b505084890196505b50505050505092915050565b7f7b226e616d65223a22466c7569642050617373204c00000000000000000000008152600085516129fc816015850160208a01612533565b7f20230000000000000000000000000000000000000000000000000000000000006015918401918201528551612a39816017840160208a01612533565b7f222c20226465736372697074696f6e223a225468697320697320466c75696420601792909101918201527f50617373204c6576656c2000000000000000000000000000000000000000000060378201528451612a9d816042840160208901612533565b7f222c000000000000000000000000000000000000000000000000000000000000604292909101918201527f22696d616765223a22000000000000000000000000000000000000000000000060448201527f646174613a696d6167652f7376672b786d6c3b6261736536342c000000000000604d820152612b4d612b2460678301866128f0565b7f227d000000000000000000000000000000000000000000000000000000000000815260020190565b979650505050505050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c000000815260008251612b9081601d850160208701612533565b91909101601d0192915050565b600082612bd3577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b8082028115828204841417610456576104566128ae565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351612c27816017850160208801612533565b7f206973206d697373696e6720726f6c65200000000000000000000000000000006017918401918201528351612c64816028840160208801612533565b01602801949350505050565b600073ffffffffffffffffffffffffffffffffffffffff808716835280861660208401525083604083015260806060830152612caf6080830184612557565b9695505050505050565b600060208284031215612ccb57600080fd5b815161232a816124e8565b600081612ce557612ce56128ae565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b81810381811115610456576104566128ae565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa2646970667358221220d3497b94e1ce665a07198e3601de4e0f85d57f66bf796acdd417b1ddfc05154f64736f6c63430008150033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000009800020b610194dba52cf606e8aa142f9f256166000000000000000000000000638bc21b096e1be1434172c46a1aafeb40604a6800000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000d466c7569642050617373204c31000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005464c44503100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000031c850484e325a79423361575230614430694d7a63314969426f5a576c6e61485139496a55774d434967646d6c6c64304a76654430694d43417749444d334e5341314d44416949475a7062477739496d3576626d5569494868746247357a50534a6f644852774f693876643364334c6e637a4c6d39795a7938794d4441774c334e325a79492b436a786e49474e7361584174634746306144306964584a734b434e6a62476c774d4638784d5455794e3138794e6a6b314e696b6950676f38636d566a6443423361575230614430694d7a63314969426f5a576c6e61485139496a55774d4349675a6d6c7362443069596d7868593273694c7a344b504763676233426859326c30655430694d4334324969426d615778305a584939496e56796243676a5a6d6c73644756794d46396d587a45784e544933587a49324f5455324b53492b436a786c6247787063484e6c49474e34505349794d5455754e5463334969426a655430694d5451774c6a6b334d694967636e6739496a49334d7934344e54516949484a35505349794e7a49754e5459354969426d6157787350534a31636d776f49334268615735304d4639736157356c59584a664d5445314d6a64664d6a59354e5459704969382b436a77765a7a344b504763676233426859326c30655430694d4334344969426d615778305a584939496e56796243676a5a6d6c73644756794d56396d587a45784e544933587a49324f5455324b53492b436a786a61584a6a6247556759336739496a4d324e5334344969426a655430694d546b314c6a4d784d794967636a30694d5441794c6a49314e7949675a6d6c7362443069497a4e434f444a474e69497650676f384c32632b436a786e4947397759574e7064486b39496a41754e5349675a6d6c736447567950534a31636d776f49325a706248526c636a4a665a6c38784d5455794e3138794e6a6b314e696b6950676f3859326c795932786c49474e34505349784d7934334d5451344969426a655430694d7a51334c6a4d354e694967636a30694d5463754d5467334e5349675a6d6c7362443069497a4e434f444a474e69497650676f384c32632b436a786e49475a706248526c636a306964584a734b434e6d615778305a58497a58324a664d5445314d6a64664d6a59354e545970496a344b50484a6c59335167654430694d5463754d7a55354e434967655430694d5463754d7a59784d79496764326c6b64476739496a4d304d4334794e7a67694947686c6157646f644430694e4459314c6a49334f434967636e6739496a4d304c6a63794d6a496949475a7062477739496e646f6158526c4969426d615778734c57397759574e7064486b39496a41754d4451694c7a344b50484a6c59335167654430694d5463754f4467774d694967655430694d5463754f4467794d69496764326c6b64476739496a4d7a4f5334794d7a59694947686c6157646f644430694e4459304c6a497a4e694967636e6739496a4d304c6a49774d54516949484e30636d39725a54306964584a734b434e7759576c756444466662476c755a574679587a45784e544933587a49324f5455324b534967633352796232746c4c5864705a48526f505349784c6a41304d5459334969382b436a77765a7a344b50484268644767675a443069545451334c6a457a4d7a49674e4455314c6a41794e3159304d7a51754f444931534459774c6a41334e5446574e444d334c6a67354d3067314d4334334f544935566a51304d79347a4e7a68494e546b754d5467334d3159304e4459754e445131534455774c6a63354d6a6c574e4455314c6a41794e3067304e7934784d7a4d79576b30324d7934304d446b79494451314e5334774d6a64574e444d304c6a67794e5567324e7934774e6a6735566a51314d5334354e6b67334e5334354e6a5931566a51314e5334774d6a64494e6a4d754e4441354d6c704e4f5445754f4463334e5341304d7a51754f44493153446b314c6a557a4e7a4a574e4451344c6a41794e454d354e5334314d7a6379494451304f5334304e7941354e5334784f545579494451314d4334334e444d674f5451754e5445784d7941304e5445754f445178517a6b7a4c6a677a4d7a6b674e4455794c6a6b7a4f5341354d6934344f444130494451314d7934334f5467674f5445754e6a55774e6941304e5451754e444532517a6b774c6a51794d446b674e4455314c6a41794e7941344f4334354f4451674e4455314c6a4d7a4d7941344e79347a4e4341304e5455754d7a4d7a517a67314c6a59344f544d674e4455314c6a4d7a4d7941344e4334794e446b79494451314e5334774d6a63674f444d754d4445354e4341304e5451754e444532517a67784c6a63344f5463674e44557a4c6a63354f4341344d4334344d7a5978494451314d6934354d7a6b674f4441754d5455344f4341304e5445754f445178517a63354c6a51344d5451674e4455774c6a63304d7941334f5334784e444934494451304f5334304e7941334f5334784e444934494451304f4334774d6a52574e444d304c6a67794e5567344d6934344d444930566a51304e7934334d5468444f4449754f4441794e4341304e4467754e5459674f4449754f5467324e5341304e446b754d7a41354944677a4c6a4d314e4467674e4451354c6a6b324e304d344d7934334d6a6b32494451314d4334324d6a55674f4451754d6a55314e7941304e5445754d545178494467304c6a6b7a4d7a45674e4455784c6a55784e6b4d344e5334324d544130494451314d5334344f4451674f4459754e4445794e7941304e5449754d445934494467334c6a4d30494451314d6934774e6a68444f4467754d6a59334d6941304e5449754d445934494467354c6a41324f5455674e4455784c6a67344e4341344f5334334e445934494451314d5334314d545a444f5441754e444d774f4341304e5445754d54517849446b774c6a6b314e6a6b674e4455774c6a59794e5341354d53347a4d6a5578494451304f5334354e6a64444f5445754e6a6b7a4e4341304e446b754d7a413549446b784c6a67334e7a55674e4451344c6a553249446b784c6a67334e7a55674e4451334c6a63784f4659304d7a51754f444931576b30784d444d754d5463314944517a4e4334344d6a56574e4455314c6a41794e3067354f5334314d545135566a517a4e4334344d6a56494d54417a4c6a45334e56704e4d54457a4c6a6b344d7941304e5455754d444933534445774e7934784d7a68574e444d304c6a67794e5567784d5451754d544978517a45784e6934784d6a63674e444d304c6a67794e5341784d5463754f4455674e444d314c6a497a494445784f5334794f5341304d7a59754d444d35517a45794d4334334d7a63674e444d324c6a67304d5341784d6a45754f4451344944517a4e7934354f5455674d5449794c6a59794e4341304d7a6b754e544178517a45794d793430494451304d5334774d4463674d54497a4c6a63344f4341304e4449754f444135494445794d7934334f4467674e4451304c6a6b774e304d784d6a4d754e7a6734494451304e7934774d5445674d54497a4c6a4d354e7941304e4467754f444535494445794d6934324d5455674e4455774c6a4d7a4d6b4d784d6a45754f444d35494451314d5334344e4451674d5449774c6a63784e7941304e544d754d444131494445784f5334794e5445674e44557a4c6a67784e454d784d5463754e7a6b78494451314e4334324d6a4d674d5445324c6a417a4e5341304e5455754d444933494445784d7934354f444d674e4455314c6a41794e31704e4d5445774c6a63354e7941304e5445754f445978534445784d7934344d445a444d5445314c6a49784d7941304e5445754f445978494445784e69347a4f4463674e4455784c6a59774e4341784d5463754d7a4933494451314d5334774f544a444d5445344c6a49324f4341304e5441754e546379494445784f4334354e7a55674e4451354c6a63354f5341784d546b754e445134494451304f4334334e7a4e444d5445354c6a6b794d6941304e4463754e7a5178494445794d4334784e5467674e4451324c6a51314d6941784d6a41754d545534494451304e4334354d4464444d5449774c6a45314f4341304e444d754d7a5978494445784f5334354d6a49674e4451794c6a41334f5341784d546b754e445134494451304d5334774e6b4d784d5467754f546331494451304d4334774d7a51674d5445344c6a49334e4341304d7a6b754d6a5934494445784e79347a4e4463674e444d344c6a63324d554d784d5459754e4449324944517a4f4334794e4467674d5445314c6a49344d6941304d7a63754f546b79494445784d7934354d5451674e444d334c6a6b354d6b67784d5441754e7a6b33566a51314d5334344e6a46614969426d6157787350534a3361476c305a53497650676f38636d566a64434234505349794e7a63754d444933496942355053497a4f4334784f54517a4969423361575230614430694e546b754e7a63334f434967614756705a3268305053497a4f4334344d7a4d7a49694279654430694d546b754e4445324e7949675a6d6c7362443069596d78685932736949475a70624777746233426859326c30655430694d4334794969382b436a78775958526f49475139496b30794f5451754e7a49674e5441754f5467314d5659324d7934324d54457a534449354d6934344e7a64574e5441754f5467314d5567794f5451754e7a4a6154544d774e53347a4d4445674e5451754d5451784e6b777a4d4445754f4459334944597a4c6a59784d544e494d6a6b354c6a67354e4577794f5459754e445530494455304c6a45304d545a494d6a6b344c6a517a4d30777a4d4441754f444d78494459784c6a51794f446c494d7a41774c6a6b7a54444d774d79347a4d6a49674e5451754d5451784e6b677a4d4455754d7a4178576b307a4d4467754f446333494455774c6a6b344e5446574e6a4d754e6a45784d30677a4d4463754d444d7a566a55774c6a6b344e5446494d7a41344c6a67334e31704e4d7a49774c6a63784e7941314d4334354f445578566a597a4c6a59784d544e494d7a45344c6a67774e6c59314d6934344f54597a53444d784f4334334d7a4a4d4d7a45314c6a63784d5341314e4334344e6a6b78566a557a4c6a41304e444a4d4d7a45344c6a67324d5341314d4334354f44557853444d794d4334334d5464614969426d6157787350534a3361476c305a53497650676f385a79426d615778305a584939496e56796243676a5a6d6c73644756794e46396b587a45784e544933587a49324f5455324b53492b436a78775958526f49475a7062477774636e56735a5430695a585a6c626d396b5a43496759327870634331796457786c50534a6c646d56756232526b4969426b50534a4e4d6a67784c6a4d354f5341794d6a55754e446b79517a49334e4334774e5341794d5441754d544934494449324e5334304f4341784f5455754d7a6378494449314e5334334e7a45674d5467784c6a4d324d5577794e5449754e6a51674d5463324c6a67344e6b4d794e4467754e7a6730494445334d53347a4d6a55674d6a517a4c6a637a4d5341784e6a59754e6a67334944497a4e7934344e4463674d54597a4c6a4d78517a497a4d5334354e6a51674d5455354c6a6b7a4d7941794d6a55754d7a6b32494445314e7934354d4449674d6a45344c6a59794e4341784e5463754d7a5930544449784d7934784d6a59674d5455324c6a6b794e454d784f5459754d445934494445314e5334314e6a49674d5463344c6a6b794f5341784e5455754e545979494445324d5334344e7a49674d5455324c6a6b794e4577784e5459754d7a6330494445314e79347a4e6a52444d5451354c6a59774d6941784e5463754f544179494445304d7934774d7a55674d5455354c6a6b7a4d7941784d7a63754d545578494445324d79347a4d554d784d7a45754d6a5933494445324e6934324f4463674d5449324c6a49784e4341784e7a45754d7a4931494445794d69347a4e5467674d5463324c6a67344e6b77784d546b754d6a4933494445344d5334304d4446444d5441354c6a55784f4341784f5455754e444578494445774d4334354e4467674d6a45774c6a45324f4341354d7934314f546b32494449794e5334314d7a4a4d4f5445754d6a4d7a4d6941794d7a41754e446333517a67344c6a4d784e7a55674d6a4d324c6a55334e7941344e6934344d445133494449304d7934794e4459674f4459754f4441304e7941794e5442444f4459754f4441304e7941794e5459754e7a557a494467344c6a4d784e7a55674d6a597a4c6a51794d6941354d5334794d7a4d79494449324f5334314d6a4a4d4f544d754e546b354e6941794e7a51754e445933517a45774d4334354e4467674d6a67354c6a677a4d6941784d446b754e54453449444d774e4334314f446b674d5445354c6a49794e79417a4d5467754e546b34544445794d69347a4e5467674d7a497a4c6a45784d304d784d6a59754d6a453049444d794f4334324e7a51674d544d784c6a49324e79417a4d7a4d754d7a45794944457a4e7934784e5445674d7a4d324c6a59344f554d784e444d754d444d3149444d304d4334774e6a59674d5451354c6a59774d69417a4e4449754d446b34494445314e69347a4e7a51674d7a51794c6a597a4e5577784e6a45754f44637949444d304d7934774e7a5a444d5463344c6a6b794f53417a4e4451754e444d33494445354e6934774e6a67674d7a51304c6a517a4e7941794d544d754d54493249444d304d7934774e7a5a4d4d6a45344c6a59794e43417a4e4449754e6a4d31517a49794e5334304d4445674d7a51794c6a41354944497a4d5334354e7a49674d7a51774c6a41314944497a4e7934344e5455674d7a4d324c6a59324d6b4d794e444d754e7a51674d7a4d7a4c6a49334e4341794e4467754e7a6b674d7a49344c6a59794e5341794e5449754e6a51674d7a497a4c6a41314d3077794e5455754e7a637849444d784f4334314d7a68444d6a59314c6a513449444d774e4334314d6a6b674d6a63304c6a4131494449344f5334334e7a49674d6a67784c6a4d354f5341794e7a51754e444133544449344d7934334e6a55674d6a59354c6a51324d6b4d794f4459754e6a67674d6a597a4c6a4d324d6941794f4467754d546b30494449314e6934324f544d674d6a67344c6a45354e4341794e446b754f544d35517a49344f4334784f5451674d6a517a4c6a45344e6941794f4459754e6a67674d6a4d324c6a55784e7941794f444d754e7a59314944497a4d4334304d54644d4d6a67784c6a4d354f5341794d6a55754e446b79576949675a6d6c736244306964326870644755694c7a344b5043396e50676f385a79426d615778305a584939496e56796243676a5a6d6c73644756794e56396b587a45784e544933587a49324f5455324b53492b436a78775958526f49475139496b30794e4463754f544532494449304e79347a4f4452444d6a51324c6a59304d5341794d5463754d545931494449794d79347a4e6a6b674d546b794c6a59324e4341784f544d754e7a63674d5467354c6a59784d304d784f5441754d7a4d31494445344f5334794e5463674d5467334c6a55794f4341784f5449754d544130494445344e7934314d6a67674d546b314c6a55334d3159794d5449754d7a4a444d5467334c6a55794f4341794d5455754e7a6734494445354d43347a4e5451674d6a45344c6a557a4e5341784f544d754e7a5178494449784f5334794d546c444d6a41314c6a4d324d6941794d6a45754e546330494449784e4334324e5341794d7a41754e4341794d5463754e7a457a494449304d5334334f5452444d6a45344c6a6b314d7941794e4445754d7a5935494449794d43347a4e6a51674d6a51784c6a45774f5341794d6a45754f546b30494449304d5334784d444e444d6a49334c6a5979494449304d5334784d6a6b674d6a4d774c6a59314e5341794e4451754d6a55784944497a4d7934774d6941794e4459754e7a6332517a497a4e5334794d7a49674d6a51354c6a45774e6941794d7a59754f546b32494449314d4334354d7a55674d6a51774c6a59354e6941794e5441754f546735517a49304e4334784e4449674d6a55774c6a6b354e5341794e4455754f544131494449304f5334304d7a4d674d6a51334c6a6b784e6941794e4463754d7a6730576949675a6d6c7362443069497a4d324e6b5a475269497650676f38634746306143426b50534a4e4d5459774c6a63354e4341784f5455754e544d33517a45324e4334324d4463674d546b7a4c6a59304e7941784e6a67754e7a5935494445354e6934324e5463674d5459344c6a63324f5341794d4441754f544934566a49304d5334794e6a68444d54597a4c6a457a4f5341794e4445754d7a4134494445324d4334784d7a59674d6a51304c6a4d324f5341784e5463754e7a597a494449304e6934344e546c4d4d5455334c6a63784d7941794e4459754f5446444d5455314c6a51354e7941794e446b754d546732494445314d7934334d7a63674d6a55774c6a6b354e5341784e5441754d444d674d6a55774c6a6b344f554d784e4459754d7a4d674d6a55774c6a6b7a4e5341784e4451754e545931494449304f5334784d4459674d5451794c6a4d314e4341794e4459754e7a6332517a457a4f5334354f446b674d6a51304c6a49314d5341784d7a59754f54557a494449304d5334784d6a6b674d544d784c6a4d794f4341794e4445754d54417a517a45794f5334354e5467674d6a51784c6a45774f4341784d6a67754e7a5130494449304d5334794f5449674d5449334c6a59314e6941794e4445754e6a417a517a457a4d4334304e4467674d6a49784c6a4d7a4e4341784e444d754d6a417a494449774e4334794e6a4d674d5459774c6a63354e4341784f5455754e544d33576949675a6d6c7362443069497a4d324e6b5a475269497650676f38634746306143426b50534a4e4d546b7a4c6a63324f53417a4d5441754d7a6733517a45354d43347a4d7a55674d7a45774c6a63304d5341784f4463754e54493349444d774e7934344f5459674d5467334c6a55794e79417a4d4451754e444933566a49344e7934324f4446444d5467334c6a55794e7941794f4451754d6a4530494445354d43347a4e544d674d6a67784c6a51324e5341784f544d754e7a51674d6a67774c6a63344d554d794d4467754d444d674d6a63334c6a67344e6941794d5467754e7a6b78494449324e5334794d4459674d6a45344c6a63354d5341794e5442444d6a45344c6a63354d5341794e446b754f445979494449784f4334334f5341794e446b754e7a4930494449784f4334334f4467674d6a51354c6a55344e6b4d794d546b754e6a6b32494449304f5334794d546b674d6a49774c6a637a4e5341794e446b754d444135494449794d6934774d4445674d6a51354c6a41784d554d794d6a55754e7a4178494449304f5334774e6a55674d6a49334c6a51324e6941794e5441754f446b31494449794f5334324e7a63674d6a557a4c6a49794e454d794d7a49754d445179494449314e5334334e446b674d6a4d314c6a41334f4341794e5467754f446378494449304d4334334d444d674d6a55344c6a67354e304d794e444d754e546b33494449314f4334344f4459674d6a51314c6a63354f5341794e5467754d446334494449304e7934314e7a67674d6a55324c6a6b314e304d794e4451754d7a6331494449344e5334784e5451674d6a49784c6a6b7a4e79417a4d4463754e446730494445354d7934334e6a6b674d7a45774c6a4d344e316f6949475a706247773949694d774d445247515455694c7a344b50484268644767675a443069545445794e7934774f4449674d6a55774c6a45774e554d784d6a63754d544979494449334d7934354e5341784e4441754f445135494449354e4334314e7941784e6a41754e7a6b7a49444d774e4334304e6a4e444d5459304c6a59774e69417a4d4459754d7a557a494445324f4334334e6a67674d7a417a4c6a4d304d7941784e6a67754e7a5934494449354f5334774e7a4a574d6a51354c6a45334e6b4d784e6a55754d446b35494449304f5334784f446b674d54597a4c6a4d304e6941794e5441754f546b78494445324d5334784e4445674d6a557a4c6a49314e6b77784e6a45754d446b78494449314d79347a4d4464444d5455344c6a63784d5341794e5455754f44417a494445314e5334324f5467674d6a55344c6a67334e5341784e5441754d444d33494449314f4334344f5464444d5451304c6a51784d5341794e5467754f446378494445304d53347a4e7a59674d6a55314c6a63304f5341784d7a6b754d444578494449314d7934794d6a52444d544d324c6a63354f5341794e5441754f446b314944457a4e5334774d7a55674d6a51354c6a41324e5341784d7a45754d7a4d31494449304f5334774d5446444d5449354c6a55314f4341794e446b754d444134494445794f4334794d6a6b674d6a51354c6a51794d6941784d6a63754d446779494449314d4334784d4456614969426d615778735053496a4d444130526b45314969382b436a77765a7a344b5043396e50676f385a47566d637a344b50475a706248526c636942705a4430695a6d6c73644756794d46396d587a45784e544933587a49324f54553249694234505349744d6a67304c6a51314d694967655430694c544d314e7934334e7a4969494864705a48526f505349784d4441774c6a41324969426f5a576c6e61485139496a6b354e7934304f44676949475a706248526c636c56756158527a50534a31633256795533426859325650626c567a5a5349675932397362334974615735305a584a776232786864476c766269316d615778305a584a7a50534a7a556b6443496a344b50475a6c526d7876623251675a6d7876623251746233426859326c30655430694d434967636d567a6457783050534a4359574e725a334a766457356b535731685a325647615867694c7a344b50475a6c516d786c626d51676257396b5a543069626d39796257467349694270626a306955323931636d4e6c52334a6863476870597949676157347950534a4359574e725a334a766457356b535731685a3256476158676949484a6c633356736444306963326868634755694c7a344b50475a6c5232463163334e70595735436248567949484e305a45526c646d6c6864476c76626a30694d54457a4c6a41344e794967636d567a6457783050534a6c5a6d5a6c5933517858325a76636d566e636d3931626d524362485679587a45784e544933587a49324f5455324969382b436a77765a6d6c736447567950676f385a6d6c736447567949476c6b50534a6d615778305a58497858325a664d5445314d6a64664d6a59354e54596949486739496a45354f5334304f446b6949486b39496a49354c6a41774d6a4569494864705a48526f5053497a4d7a49754e6a497a4969426f5a576c6e61485139496a4d7a4d6934324d6a456949475a706248526c636c56756158527a50534a31633256795533426859325650626c567a5a5349675932397362334974615735305a584a776232786864476c766269316d615778305a584a7a50534a7a556b6443496a344b50475a6c526d7876623251675a6d7876623251746233426859326c30655430694d434967636d567a6457783050534a4359574e725a334a766457356b535731685a325647615867694c7a344b50475a6c516d786c626d51676257396b5a543069626d39796257467349694270626a306955323931636d4e6c52334a6863476870597949676157347950534a4359574e725a334a766457356b535731685a3256476158676949484a6c633356736444306963326868634755694c7a344b50475a6c5232463163334e70595735436248567949484e305a45526c646d6c6864476c76626a30694d7a49754d4449324f434967636d567a6457783050534a6c5a6d5a6c5933517858325a76636d566e636d3931626d524362485679587a45784e544933587a49324f5455324969382b436a77765a6d6c736447567950676f385a6d6c736447567949476c6b50534a6d615778305a58497958325a664d5445314d6a64664d6a59354e54596949486739496930784d7934344f446b7a496942355053497a4d546b754e7a6b784969423361575230614430694e5455754d6a41344d794967614756705a326830505349314e5334794d44677a4969426d615778305a584a56626d6c30637a306964584e6c636c4e7759574e6c543235566332556949474e76624739794c576c75644756796347397359585270623234745a6d6c7364475679637a306963314a485169492b436a786d5a555a736232396b49475a736232396b4c57397759574e7064486b39496a416949484a6c6333567364443069516d466a61326479623356755a456c745957646c526d6c344969382b436a786d5a554a735a57356b494731765a475539496d3576636d31686243496761573439496c4e7664584a6a5a5564795958426f61574d6949476c754d6a3069516d466a61326479623356755a456c745957646c526d6c34496942795a584e3162485139496e4e6f5958426c4969382b436a786d5a55646864584e7a61574675516d78316369427a644752455a585a705958527062323439496a55754d6a41344d7a4d6949484a6c63335673644430695a575a6d5a574e304d56396d62334a6c5a334a766457356b516d7831636c38784d5455794e3138794e6a6b314e69497650676f384c325a706248526c636a344b50475a706248526c636942705a4430695a6d6c73644756794d313969587a45784e544933587a49324f54553249694234505349744d7a67754d546b324d694967655430694c544d344c6a45354e444969494864705a48526f505349304e5445754d7a67344969426f5a576c6e61485139496a55334e69347a4f44676949475a706248526c636c56756158527a50534a31633256795533426859325650626c567a5a5349675932397362334974615735305a584a776232786864476c766269316d615778305a584a7a50534a7a556b6443496a344b50475a6c526d7876623251675a6d7876623251746233426859326c30655430694d434967636d567a6457783050534a4359574e725a334a766457356b535731685a325647615867694c7a344b50475a6c5232463163334e70595735436248567949476c7550534a4359574e725a334a766457356b535731685a3256476158676949484e305a45526c646d6c6864476c76626a30694d6a63754e7a63334f43497650676f385a6d56446232317762334e70644755676157347950534a5462335679593256426248426f595349676233426c636d463062334939496d6c75496942795a584e3162485139496d566d5a6d566a64444666596d466a61326479623356755a454a7364584a664d5445314d6a64664d6a59354e5459694c7a344b50475a6c516d786c626d51676257396b5a543069626d39796257467349694270626a306955323931636d4e6c52334a6863476870597949676157347950534a6c5a6d5a6c5933517858324a685932746e636d3931626d524362485679587a45784e544933587a49324f545532496942795a584e3162485139496e4e6f5958426c4969382b436a77765a6d6c736447567950676f385a6d6c736447567949476c6b50534a6d615778305a584930583252664d5445314d6a64664d6a59354e54596949486739496a4d7a4c6a4d7a4d6a556949486b39496a45774e5334354d444969494864705a48526f5053497a4d4467754d7a4d314969426f5a576c6e61485139496a49354e5334784d7a6b6949475a706248526c636c56756158527a50534a31633256795533426859325650626c567a5a5349675932397362334974615735305a584a776232786864476c766269316d615778305a584a7a50534a7a556b6443496a344b50475a6c526d7876623251675a6d7876623251746233426859326c30655430694d434967636d567a6457783050534a4359574e725a334a766457356b535731685a325647615867694c7a344b50475a6c5132397362334a4e595852796158676761573439496c4e7664584a6a5a55467363476868496942306558426c50534a74595852796158676949485a686248566c637a30694d434177494441674d434177494441674d434177494441674d434177494441674d434177494441674d434177494441674d5449334944416949484a6c6333567364443069614746795a454673634768684969382b436a786d5a55396d5a6e4e6c6443426b655430694d7934304e7a49794d69497650676f385a6d56485958567a63326c68626b4a73645849676333526b524756326157463061573975505349794e6934334d7a59784969382b436a786d5a554e766258427663326c305a534270626a4939496d6868636d52426248426f595349676233426c636d463062334939496d39316443497650676f385a6d564462327876636b316864484a70654342306558426c50534a74595852796158676949485a686248566c637a30694d434177494441674d434178494441674d434177494441674d534177494441674d434177494445674d434177494441674d43347a4e5341774969382b436a786d5a554a735a57356b494731765a475539496d3576636d3168624349676157347950534a4359574e725a334a766457356b535731685a3256476158676949484a6c63335673644430695a575a6d5a574e304d56396b636d3977553268685a473933587a45784e544933587a49324f5455324969382b436a786d5a554a735a57356b494731765a475539496d3576636d31686243496761573439496c4e7664584a6a5a5564795958426f61574d6949476c754d6a30695a575a6d5a574e304d56396b636d3977553268685a473933587a45784e544933587a49324f545532496942795a584e3162485139496e4e6f5958426c4969382b436a77765a6d6c736447567950676f385a6d6c736447567949476c6b50534a6d615778305a584931583252664d5445314d6a64664d6a59354e54596949486739496a51774c6a49334e6a556949486b39496a45774e4334784e6a5969494864705a48526f505349794f5451754e4451334969426f5a576c6e61485139496a49354e4334304e44556949475a706248526c636c56756158527a50534a31633256795533426859325650626c567a5a5349675932397362334974615735305a584a776232786864476c766269316d615778305a584a7a50534a7a556b6443496a344b50475a6c526d7876623251675a6d7876623251746233426859326c30655430694d434967636d567a6457783050534a4359574e725a334a766457356b535731685a325647615867694c7a344b50475a6c5132397362334a4e595852796158676761573439496c4e7664584a6a5a55467363476868496942306558426c50534a74595852796158676949485a686248566c637a30694d434177494441674d434177494441674d434177494441674d434177494441674d434177494441674d434177494441674d5449334944416949484a6c6333567364443069614746795a454673634768684969382b436a786d5a55396d5a6e4e6c6443426b655430694d53347a4f4467344f53497650676f385a6d56485958567a63326c68626b4a73645849676333526b524756326157463061573975505349304d7934304d4449344969382b436a786d5a554e766258427663326c305a534270626a4939496d6868636d52426248426f595349676233426c636d463062334939496d39316443497650676f385a6d564462327876636b316864484a70654342306558426c50534a74595852796158676949485a686248566c637a30694d434177494441674d4341774c6a49354f44417a4f534177494441674d434177494441754e4455304f544179494441674d434177494441674d4334354e6a51334d4459674d434177494441674d4334304e5341774969382b436a786d5a554a735a57356b494731765a475539496d3576636d3168624349676157347950534a4359574e725a334a766457356b535731685a3256476158676949484a6c63335673644430695a575a6d5a574e304d56396b636d3977553268685a473933587a45784e544933587a49324f5455324969382b436a786d5a554a735a57356b494731765a475539496d3576636d31686243496761573439496c4e7664584a6a5a5564795958426f61574d6949476c754d6a30695a575a6d5a574e304d56396b636d3977553268685a473933587a45784e544933587a49324f545532496942795a584e3162485139496e4e6f5958426c4969382b436a77765a6d6c736447567950676f3862476c755a57467952334a685a476c6c626e516761575139496e4268615735304d4639736157356c59584a664d5445314d6a64664d6a59354e54596949486778505349744d7a6b754e6a4d79496942354d5430694d7a55754e44497a4e69496765444939496a49344d6934334d54496949486b79505349784e7a45754d4451354969426e636d466b61575675644656756158527a50534a31633256795533426859325650626c567a5a53492b436a787a6447397749484e3062334174593239736233493949694d7a516a6779526a59694c7a344b50484e306233416762325a6d63325630505349784969427a644739774c574e76624739795053496a4d3049344d6b59324969382b436a777662476c755a57467952334a685a476c6c626e512b436a78736157356c59584a48636d466b61575675644342705a44306963474670626e517858327870626d5668636c38784d5455794e3138794e6a6b314e69496765444539496930304e7934794d6a516949486b78505349304d7a49754d6a6b79496942344d6a30694e4441794c6a49314e53496765544939496a67354c6a55344d7a596949476479595752705a5735305657357064484d39496e567a5a584a546347466a5a55397556584e6c496a344b50484e3062334167633352766343316a62327876636a3069643268706447556949484e30623341746233426859326c30655430694d4334784969382b436a787a644739774947396d5a6e4e6c644430694d4334314969427a644739774c574e766247397950534a3361476c305a53496763335276634331766347466a61585235505349774c6a41304969382b436a787a644739774947396d5a6e4e6c644430694d534967633352766343316a62327876636a3069643268706447556949484e30623341746233426859326c30655430694d4334784969382b436a777662476c755a57467952334a685a476c6c626e512b436a786a62476c7755474630614342705a44306959327870634442664d5445314d6a64664d6a59354e54596950676f38636d566a6443423361575230614430694d7a63314969426f5a576c6e61485139496a55774d4349675a6d6c736244306964326870644755694c7a344b5043396a62476c77554746306144344b5043396b5a575a7a50676f384c334e325a7a344b000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : defaultAdmin_ (address): 0x9800020b610194dBa52CF606E8Aa142F9F256166
Arg [1] : minter_ (address): 0x638Bc21B096E1Be1434172C46A1aAFEb40604A68
Arg [2] : name_ (string): Fluid Pass L1
Arg [3] : symbol_ (string): FLDP1
Arg [4] : image_ (string): PHN2ZyB3aWR0aD0iMzc1IiBoZWlnaHQ9IjUwMCIgdmlld0JveD0iMCAwIDM3NSA1MDAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMF8xMTUyN18yNjk1NikiPgo8cmVjdCB3aWR0aD0iMzc1IiBoZWlnaHQ9IjUwMCIgZmlsbD0iYmxhY2siLz4KPGcgb3BhY2l0eT0iMC42IiBmaWx0ZXI9InVybCgjZmlsdGVyMF9mXzExNTI3XzI2OTU2KSI+CjxlbGxpcHNlIGN4PSIyMTUuNTc3IiBjeT0iMTQwLjk3MiIgcng9IjI3My44NTQiIHJ5PSIyNzIuNTY5IiBmaWxsPSJ1cmwoI3BhaW50MF9saW5lYXJfMTE1MjdfMjY5NTYpIi8+CjwvZz4KPGcgb3BhY2l0eT0iMC44IiBmaWx0ZXI9InVybCgjZmlsdGVyMV9mXzExNTI3XzI2OTU2KSI+CjxjaXJjbGUgY3g9IjM2NS44IiBjeT0iMTk1LjMxMyIgcj0iMTAyLjI1NyIgZmlsbD0iIzNCODJGNiIvPgo8L2c+CjxnIG9wYWNpdHk9IjAuNSIgZmlsdGVyPSJ1cmwoI2ZpbHRlcjJfZl8xMTUyN18yNjk1NikiPgo8Y2lyY2xlIGN4PSIxMy43MTQ4IiBjeT0iMzQ3LjM5NiIgcj0iMTcuMTg3NSIgZmlsbD0iIzNCODJGNiIvPgo8L2c+CjxnIGZpbHRlcj0idXJsKCNmaWx0ZXIzX2JfMTE1MjdfMjY5NTYpIj4KPHJlY3QgeD0iMTcuMzU5NCIgeT0iMTcuMzYxMyIgd2lkdGg9IjM0MC4yNzgiIGhlaWdodD0iNDY1LjI3OCIgcng9IjM0LjcyMjIiIGZpbGw9IndoaXRlIiBmaWxsLW9wYWNpdHk9IjAuMDQiLz4KPHJlY3QgeD0iMTcuODgwMiIgeT0iMTcuODgyMiIgd2lkdGg9IjMzOS4yMzYiIGhlaWdodD0iNDY0LjIzNiIgcng9IjM0LjIwMTQiIHN0cm9rZT0idXJsKCNwYWludDFfbGluZWFyXzExNTI3XzI2OTU2KSIgc3Ryb2tlLXdpZHRoPSIxLjA0MTY3Ii8+CjwvZz4KPHBhdGggZD0iTTQ3LjEzMzIgNDU1LjAyN1Y0MzQuODI1SDYwLjA3NTFWNDM3Ljg5M0g1MC43OTI5VjQ0My4zNzhINTkuMTg3M1Y0NDYuNDQ1SDUwLjc5MjlWNDU1LjAyN0g0Ny4xMzMyWk02My40MDkyIDQ1NS4wMjdWNDM0LjgyNUg2Ny4wNjg5VjQ1MS45Nkg3NS45NjY1VjQ1NS4wMjdINjMuNDA5MlpNOTEuODc3NSA0MzQuODI1SDk1LjUzNzJWNDQ4LjAyNEM5NS41MzcyIDQ0OS40NyA5NS4xOTUyIDQ1MC43NDMgOTQuNTExMyA0NTEuODQxQzkzLjgzMzkgNDUyLjkzOSA5Mi44ODA0IDQ1My43OTggOTEuNjUwNiA0NTQuNDE2QzkwLjQyMDkgNDU1LjAyNyA4OC45ODQgNDU1LjMzMyA4Ny4zNCA0NTUuMzMzQzg1LjY4OTMgNDU1LjMzMyA4NC4yNDkyIDQ1NS4wMjcgODMuMDE5NCA0NTQuNDE2QzgxLjc4OTcgNDUzLjc5OCA4MC44MzYxIDQ1Mi45MzkgODAuMTU4OCA0NTEuODQxQzc5LjQ4MTQgNDUwLjc0MyA3OS4xNDI4IDQ0OS40NyA3OS4xNDI4IDQ0OC4wMjRWNDM0LjgyNUg4Mi44MDI0VjQ0Ny43MThDODIuODAyNCA0NDguNTYgODIuOTg2NSA0NDkuMzA5IDgzLjM1NDggNDQ5Ljk2N0M4My43Mjk2IDQ1MC42MjUgODQuMjU1NyA0NTEuMTQxIDg0LjkzMzEgNDUxLjUxNkM4NS42MTA0IDQ1MS44ODQgODYuNDEyNyA0NTIuMDY4IDg3LjM0IDQ1Mi4wNjhDODguMjY3MiA0NTIuMDY4IDg5LjA2OTUgNDUxLjg4NCA4OS43NDY4IDQ1MS41MTZDOTAuNDMwOCA0NTEuMTQxIDkwLjk1NjkgNDUwLjYyNSA5MS4zMjUxIDQ0OS45NjdDOTEuNjkzNCA0NDkuMzA5IDkxLjg3NzUgNDQ4LjU2IDkxLjg3NzUgNDQ3LjcxOFY0MzQuODI1Wk0xMDMuMTc1IDQzNC44MjVWNDU1LjAyN0g5OS41MTQ5VjQzNC44MjVIMTAzLjE3NVpNMTEzLjk4MyA0NTUuMDI3SDEwNy4xMzhWNDM0LjgyNUgxMTQuMTIxQzExNi4xMjcgNDM0LjgyNSAxMTcuODUgNDM1LjIzIDExOS4yOSA0MzYuMDM5QzEyMC43MzcgNDM2Ljg0MSAxMjEuODQ4IDQzNy45OTUgMTIyLjYyNCA0MzkuNTAxQzEyMy40IDQ0MS4wMDcgMTIzLjc4OCA0NDIuODA5IDEyMy43ODggNDQ0LjkwN0MxMjMuNzg4IDQ0Ny4wMTEgMTIzLjM5NyA0NDguODE5IDEyMi42MTUgNDUwLjMzMkMxMjEuODM5IDQ1MS44NDQgMTIwLjcxNyA0NTMuMDA1IDExOS4yNTEgNDUzLjgxNEMxMTcuNzkxIDQ1NC42MjMgMTE2LjAzNSA0NTUuMDI3IDExMy45ODMgNDU1LjAyN1pNMTEwLjc5NyA0NTEuODYxSDExMy44MDZDMTE1LjIxMyA0NTEuODYxIDExNi4zODcgNDUxLjYwNCAxMTcuMzI3IDQ1MS4wOTJDMTE4LjI2OCA0NTAuNTcyIDExOC45NzUgNDQ5Ljc5OSAxMTkuNDQ4IDQ0OC43NzNDMTE5LjkyMiA0NDcuNzQxIDEyMC4xNTggNDQ2LjQ1MiAxMjAuMTU4IDQ0NC45MDdDMTIwLjE1OCA0NDMuMzYxIDExOS45MjIgNDQyLjA3OSAxMTkuNDQ4IDQ0MS4wNkMxMTguOTc1IDQ0MC4wMzQgMTE4LjI3NCA0MzkuMjY4IDExNy4zNDcgNDM4Ljc2MUMxMTYuNDI2IDQzOC4yNDggMTE1LjI4MiA0MzcuOTkyIDExMy45MTQgNDM3Ljk5MkgxMTAuNzk3VjQ1MS44NjFaIiBmaWxsPSJ3aGl0ZSIvPgo8cmVjdCB4PSIyNzcuMDI3IiB5PSIzOC4xOTQzIiB3aWR0aD0iNTkuNzc3OCIgaGVpZ2h0PSIzOC44MzMzIiByeD0iMTkuNDE2NyIgZmlsbD0iYmxhY2siIGZpbGwtb3BhY2l0eT0iMC4yIi8+CjxwYXRoIGQ9Ik0yOTQuNzIgNTAuOTg1MVY2My42MTEzSDI5Mi44NzdWNTAuOTg1MUgyOTQuNzJaTTMwNS4zMDEgNTQuMTQxNkwzMDEuODY3IDYzLjYxMTNIMjk5Ljg5NEwyOTYuNDU0IDU0LjE0MTZIMjk4LjQzM0wzMDAuODMxIDYxLjQyODlIMzAwLjkzTDMwMy4zMjIgNTQuMTQxNkgzMDUuMzAxWk0zMDguODc3IDUwLjk4NTFWNjMuNjExM0gzMDcuMDMzVjUwLjk4NTFIMzA4Ljg3N1pNMzIwLjcxNyA1MC45ODUxVjYzLjYxMTNIMzE4LjgwNlY1Mi44OTYzSDMxOC43MzJMMzE1LjcxMSA1NC44NjkxVjUzLjA0NDJMMzE4Ljg2MSA1MC45ODUxSDMyMC43MTdaIiBmaWxsPSJ3aGl0ZSIvPgo8ZyBmaWx0ZXI9InVybCgjZmlsdGVyNF9kXzExNTI3XzI2OTU2KSI+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMjgxLjM5OSAyMjUuNDkyQzI3NC4wNSAyMTAuMTI4IDI2NS40OCAxOTUuMzcxIDI1NS43NzEgMTgxLjM2MUwyNTIuNjQgMTc2Ljg4NkMyNDguNzg0IDE3MS4zMjUgMjQzLjczMSAxNjYuNjg3IDIzNy44NDcgMTYzLjMxQzIzMS45NjQgMTU5LjkzMyAyMjUuMzk2IDE1Ny45MDIgMjE4LjYyNCAxNTcuMzY0TDIxMy4xMjYgMTU2LjkyNEMxOTYuMDY4IDE1NS41NjIgMTc4LjkyOSAxNTUuNTYyIDE2MS44NzIgMTU2LjkyNEwxNTYuMzc0IDE1Ny4zNjRDMTQ5LjYwMiAxNTcuOTAyIDE0My4wMzUgMTU5LjkzMyAxMzcuMTUxIDE2My4zMUMxMzEuMjY3IDE2Ni42ODcgMTI2LjIxNCAxNzEuMzI1IDEyMi4zNTggMTc2Ljg4NkwxMTkuMjI3IDE4MS40MDFDMTA5LjUxOCAxOTUuNDExIDEwMC45NDggMjEwLjE2OCA5My41OTk2IDIyNS41MzJMOTEuMjMzMiAyMzAuNDc3Qzg4LjMxNzUgMjM2LjU3NyA4Ni44MDQ3IDI0My4yNDYgODYuODA0NyAyNTBDODYuODA0NyAyNTYuNzUzIDg4LjMxNzUgMjYzLjQyMiA5MS4yMzMyIDI2OS41MjJMOTMuNTk5NiAyNzQuNDY3QzEwMC45NDggMjg5LjgzMiAxMDkuNTE4IDMwNC41ODkgMTE5LjIyNyAzMTguNTk4TDEyMi4zNTggMzIzLjExM0MxMjYuMjE0IDMyOC42NzQgMTMxLjI2NyAzMzMuMzEyIDEzNy4xNTEgMzM2LjY4OUMxNDMuMDM1IDM0MC4wNjYgMTQ5LjYwMiAzNDIuMDk4IDE1Ni4zNzQgMzQyLjYzNUwxNjEuODcyIDM0My4wNzZDMTc4LjkyOSAzNDQuNDM3IDE5Ni4wNjggMzQ0LjQzNyAyMTMuMTI2IDM0My4wNzZMMjE4LjYyNCAzNDIuNjM1QzIyNS40MDEgMzQyLjA5IDIzMS45NzIgMzQwLjA1IDIzNy44NTUgMzM2LjY2MkMyNDMuNzQgMzMzLjI3NCAyNDguNzkgMzI4LjYyNSAyNTIuNjQgMzIzLjA1M0wyNTUuNzcxIDMxOC41MzhDMjY1LjQ4IDMwNC41MjkgMjc0LjA1IDI4OS43NzIgMjgxLjM5OSAyNzQuNDA3TDI4My43NjUgMjY5LjQ2MkMyODYuNjggMjYzLjM2MiAyODguMTk0IDI1Ni42OTMgMjg4LjE5NCAyNDkuOTM5QzI4OC4xOTQgMjQzLjE4NiAyODYuNjggMjM2LjUxNyAyODMuNzY1IDIzMC40MTdMMjgxLjM5OSAyMjUuNDkyWiIgZmlsbD0id2hpdGUiLz4KPC9nPgo8ZyBmaWx0ZXI9InVybCgjZmlsdGVyNV9kXzExNTI3XzI2OTU2KSI+CjxwYXRoIGQ9Ik0yNDcuOTE2IDI0Ny4zODRDMjQ2LjY0MSAyMTcuMTY1IDIyMy4zNjkgMTkyLjY2NCAxOTMuNzcgMTg5LjYxM0MxOTAuMzM1IDE4OS4yNTcgMTg3LjUyOCAxOTIuMTA0IDE4Ny41MjggMTk1LjU3M1YyMTIuMzJDMTg3LjUyOCAyMTUuNzg4IDE5MC4zNTQgMjE4LjUzNSAxOTMuNzQxIDIxOS4yMTlDMjA1LjM2MiAyMjEuNTc0IDIxNC42NSAyMzAuNCAyMTcuNzEzIDI0MS43OTRDMjE4Ljk1MyAyNDEuMzY5IDIyMC4zNjQgMjQxLjEwOSAyMjEuOTk0IDI0MS4xMDNDMjI3LjYyIDI0MS4xMjkgMjMwLjY1NSAyNDQuMjUxIDIzMy4wMiAyNDYuNzc2QzIzNS4yMzIgMjQ5LjEwNiAyMzYuOTk2IDI1MC45MzUgMjQwLjY5NiAyNTAuOTg5QzI0NC4xNDIgMjUwLjk5NSAyNDUuOTA1IDI0OS40MzMgMjQ3LjkxNiAyNDcuMzg0WiIgZmlsbD0iIzM2NkZGRiIvPgo8cGF0aCBkPSJNMTYwLjc5NCAxOTUuNTM3QzE2NC42MDcgMTkzLjY0NyAxNjguNzY5IDE5Ni42NTcgMTY4Ljc2OSAyMDAuOTI4VjI0MS4yNjhDMTYzLjEzOSAyNDEuMzA4IDE2MC4xMzYgMjQ0LjM2OSAxNTcuNzYzIDI0Ni44NTlMMTU3LjcxMyAyNDYuOTFDMTU1LjQ5NyAyNDkuMTg2IDE1My43MzcgMjUwLjk5NSAxNTAuMDMgMjUwLjk4OUMxNDYuMzMgMjUwLjkzNSAxNDQuNTY1IDI0OS4xMDYgMTQyLjM1NCAyNDYuNzc2QzEzOS45ODkgMjQ0LjI1MSAxMzYuOTUzIDI0MS4xMjkgMTMxLjMyOCAyNDEuMTAzQzEyOS45NTggMjQxLjEwOCAxMjguNzQ0IDI0MS4yOTIgMTI3LjY1NiAyNDEuNjAzQzEzMC40NDggMjIxLjMzNCAxNDMuMjAzIDIwNC4yNjMgMTYwLjc5NCAxOTUuNTM3WiIgZmlsbD0iIzM2NkZGRiIvPgo8cGF0aCBkPSJNMTkzLjc2OSAzMTAuMzg3QzE5MC4zMzUgMzEwLjc0MSAxODcuNTI3IDMwNy44OTYgMTg3LjUyNyAzMDQuNDI3VjI4Ny42ODFDMTg3LjUyNyAyODQuMjE0IDE5MC4zNTMgMjgxLjQ2NSAxOTMuNzQgMjgwLjc4MUMyMDguMDMgMjc3Ljg4NiAyMTguNzkxIDI2NS4yMDYgMjE4Ljc5MSAyNTBDMjE4Ljc5MSAyNDkuODYyIDIxOC43OSAyNDkuNzI0IDIxOC43ODggMjQ5LjU4NkMyMTkuNjk2IDI0OS4yMTkgMjIwLjczNSAyNDkuMDA5IDIyMi4wMDEgMjQ5LjAxMUMyMjUuNzAxIDI0OS4wNjUgMjI3LjQ2NiAyNTAuODk1IDIyOS42NzcgMjUzLjIyNEMyMzIuMDQyIDI1NS43NDkgMjM1LjA3OCAyNTguODcxIDI0MC43MDMgMjU4Ljg5N0MyNDMuNTk3IDI1OC44ODYgMjQ1Ljc5OSAyNTguMDc4IDI0Ny41NzggMjU2Ljk1N0MyNDQuMzc1IDI4NS4xNTQgMjIxLjkzNyAzMDcuNDg0IDE5My43NjkgMzEwLjM4N1oiIGZpbGw9IiMwMDRGQTUiLz4KPHBhdGggZD0iTTEyNy4wODIgMjUwLjEwNUMxMjcuMTIyIDI3My45NSAxNDAuODQ5IDI5NC41NyAxNjAuNzkzIDMwNC40NjNDMTY0LjYwNiAzMDYuMzUzIDE2OC43NjggMzAzLjM0MyAxNjguNzY4IDI5OS4wNzJWMjQ5LjE3NkMxNjUuMDk5IDI0OS4xODkgMTYzLjM0NiAyNTAuOTkxIDE2MS4xNDEgMjUzLjI1NkwxNjEuMDkxIDI1My4zMDdDMTU4LjcxMSAyNTUuODAzIDE1NS42OTggMjU4Ljg3NSAxNTAuMDM3IDI1OC44OTdDMTQ0LjQxMSAyNTguODcxIDE0MS4zNzYgMjU1Ljc0OSAxMzkuMDExIDI1My4yMjRDMTM2Ljc5OSAyNTAuODk1IDEzNS4wMzUgMjQ5LjA2NSAxMzEuMzM1IDI0OS4wMTFDMTI5LjU1OCAyNDkuMDA4IDEyOC4yMjkgMjQ5LjQyMiAxMjcuMDgyIDI1MC4xMDVaIiBmaWxsPSIjMDA0RkE1Ii8+CjwvZz4KPC9nPgo8ZGVmcz4KPGZpbHRlciBpZD0iZmlsdGVyMF9mXzExNTI3XzI2OTU2IiB4PSItMjg0LjQ1MiIgeT0iLTM1Ny43NzIiIHdpZHRoPSIxMDAwLjA2IiBoZWlnaHQ9Ijk5Ny40ODgiIGZpbHRlclVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzPSJzUkdCIj4KPGZlRmxvb2QgZmxvb2Qtb3BhY2l0eT0iMCIgcmVzdWx0PSJCYWNrZ3JvdW5kSW1hZ2VGaXgiLz4KPGZlQmxlbmQgbW9kZT0ibm9ybWFsIiBpbj0iU291cmNlR3JhcGhpYyIgaW4yPSJCYWNrZ3JvdW5kSW1hZ2VGaXgiIHJlc3VsdD0ic2hhcGUiLz4KPGZlR2F1c3NpYW5CbHVyIHN0ZERldmlhdGlvbj0iMTEzLjA4NyIgcmVzdWx0PSJlZmZlY3QxX2ZvcmVncm91bmRCbHVyXzExNTI3XzI2OTU2Ii8+CjwvZmlsdGVyPgo8ZmlsdGVyIGlkPSJmaWx0ZXIxX2ZfMTE1MjdfMjY5NTYiIHg9IjE5OS40ODkiIHk9IjI5LjAwMjEiIHdpZHRoPSIzMzIuNjIzIiBoZWlnaHQ9IjMzMi42MjEiIGZpbHRlclVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzPSJzUkdCIj4KPGZlRmxvb2QgZmxvb2Qtb3BhY2l0eT0iMCIgcmVzdWx0PSJCYWNrZ3JvdW5kSW1hZ2VGaXgiLz4KPGZlQmxlbmQgbW9kZT0ibm9ybWFsIiBpbj0iU291cmNlR3JhcGhpYyIgaW4yPSJCYWNrZ3JvdW5kSW1hZ2VGaXgiIHJlc3VsdD0ic2hhcGUiLz4KPGZlR2F1c3NpYW5CbHVyIHN0ZERldmlhdGlvbj0iMzIuMDI2OCIgcmVzdWx0PSJlZmZlY3QxX2ZvcmVncm91bmRCbHVyXzExNTI3XzI2OTU2Ii8+CjwvZmlsdGVyPgo8ZmlsdGVyIGlkPSJmaWx0ZXIyX2ZfMTE1MjdfMjY5NTYiIHg9Ii0xMy44ODkzIiB5PSIzMTkuNzkxIiB3aWR0aD0iNTUuMjA4MyIgaGVpZ2h0PSI1NS4yMDgzIiBmaWx0ZXJVbml0cz0idXNlclNwYWNlT25Vc2UiIGNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycz0ic1JHQiI+CjxmZUZsb29kIGZsb29kLW9wYWNpdHk9IjAiIHJlc3VsdD0iQmFja2dyb3VuZEltYWdlRml4Ii8+CjxmZUJsZW5kIG1vZGU9Im5vcm1hbCIgaW49IlNvdXJjZUdyYXBoaWMiIGluMj0iQmFja2dyb3VuZEltYWdlRml4IiByZXN1bHQ9InNoYXBlIi8+CjxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249IjUuMjA4MzMiIHJlc3VsdD0iZWZmZWN0MV9mb3JlZ3JvdW5kQmx1cl8xMTUyN18yNjk1NiIvPgo8L2ZpbHRlcj4KPGZpbHRlciBpZD0iZmlsdGVyM19iXzExNTI3XzI2OTU2IiB4PSItMzguMTk2MiIgeT0iLTM4LjE5NDIiIHdpZHRoPSI0NTEuMzg4IiBoZWlnaHQ9IjU3Ni4zODgiIGZpbHRlclVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzPSJzUkdCIj4KPGZlRmxvb2QgZmxvb2Qtb3BhY2l0eT0iMCIgcmVzdWx0PSJCYWNrZ3JvdW5kSW1hZ2VGaXgiLz4KPGZlR2F1c3NpYW5CbHVyIGluPSJCYWNrZ3JvdW5kSW1hZ2VGaXgiIHN0ZERldmlhdGlvbj0iMjcuNzc3OCIvPgo8ZmVDb21wb3NpdGUgaW4yPSJTb3VyY2VBbHBoYSIgb3BlcmF0b3I9ImluIiByZXN1bHQ9ImVmZmVjdDFfYmFja2dyb3VuZEJsdXJfMTE1MjdfMjY5NTYiLz4KPGZlQmxlbmQgbW9kZT0ibm9ybWFsIiBpbj0iU291cmNlR3JhcGhpYyIgaW4yPSJlZmZlY3QxX2JhY2tncm91bmRCbHVyXzExNTI3XzI2OTU2IiByZXN1bHQ9InNoYXBlIi8+CjwvZmlsdGVyPgo8ZmlsdGVyIGlkPSJmaWx0ZXI0X2RfMTE1MjdfMjY5NTYiIHg9IjMzLjMzMjUiIHk9IjEwNS45MDIiIHdpZHRoPSIzMDguMzM1IiBoZWlnaHQ9IjI5NS4xMzkiIGZpbHRlclVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzPSJzUkdCIj4KPGZlRmxvb2QgZmxvb2Qtb3BhY2l0eT0iMCIgcmVzdWx0PSJCYWNrZ3JvdW5kSW1hZ2VGaXgiLz4KPGZlQ29sb3JNYXRyaXggaW49IlNvdXJjZUFscGhhIiB0eXBlPSJtYXRyaXgiIHZhbHVlcz0iMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMTI3IDAiIHJlc3VsdD0iaGFyZEFscGhhIi8+CjxmZU9mZnNldCBkeT0iMy40NzIyMiIvPgo8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPSIyNi43MzYxIi8+CjxmZUNvbXBvc2l0ZSBpbjI9ImhhcmRBbHBoYSIgb3BlcmF0b3I9Im91dCIvPgo8ZmVDb2xvck1hdHJpeCB0eXBlPSJtYXRyaXgiIHZhbHVlcz0iMCAwIDAgMCAxIDAgMCAwIDAgMSAwIDAgMCAwIDEgMCAwIDAgMC4zNSAwIi8+CjxmZUJsZW5kIG1vZGU9Im5vcm1hbCIgaW4yPSJCYWNrZ3JvdW5kSW1hZ2VGaXgiIHJlc3VsdD0iZWZmZWN0MV9kcm9wU2hhZG93XzExNTI3XzI2OTU2Ii8+CjxmZUJsZW5kIG1vZGU9Im5vcm1hbCIgaW49IlNvdXJjZUdyYXBoaWMiIGluMj0iZWZmZWN0MV9kcm9wU2hhZG93XzExNTI3XzI2OTU2IiByZXN1bHQ9InNoYXBlIi8+CjwvZmlsdGVyPgo8ZmlsdGVyIGlkPSJmaWx0ZXI1X2RfMTE1MjdfMjY5NTYiIHg9IjQwLjI3NjUiIHk9IjEwNC4xNjYiIHdpZHRoPSIyOTQuNDQ3IiBoZWlnaHQ9IjI5NC40NDUiIGZpbHRlclVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzPSJzUkdCIj4KPGZlRmxvb2QgZmxvb2Qtb3BhY2l0eT0iMCIgcmVzdWx0PSJCYWNrZ3JvdW5kSW1hZ2VGaXgiLz4KPGZlQ29sb3JNYXRyaXggaW49IlNvdXJjZUFscGhhIiB0eXBlPSJtYXRyaXgiIHZhbHVlcz0iMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMTI3IDAiIHJlc3VsdD0iaGFyZEFscGhhIi8+CjxmZU9mZnNldCBkeT0iMS4zODg4OSIvPgo8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPSI0My40MDI4Ii8+CjxmZUNvbXBvc2l0ZSBpbjI9ImhhcmRBbHBoYSIgb3BlcmF0b3I9Im91dCIvPgo8ZmVDb2xvck1hdHJpeCB0eXBlPSJtYXRyaXgiIHZhbHVlcz0iMCAwIDAgMCAwLjI5ODAzOSAwIDAgMCAwIDAuNDU0OTAyIDAgMCAwIDAgMC45NjQ3MDYgMCAwIDAgMC40NSAwIi8+CjxmZUJsZW5kIG1vZGU9Im5vcm1hbCIgaW4yPSJCYWNrZ3JvdW5kSW1hZ2VGaXgiIHJlc3VsdD0iZWZmZWN0MV9kcm9wU2hhZG93XzExNTI3XzI2OTU2Ii8+CjxmZUJsZW5kIG1vZGU9Im5vcm1hbCIgaW49IlNvdXJjZUdyYXBoaWMiIGluMj0iZWZmZWN0MV9kcm9wU2hhZG93XzExNTI3XzI2OTU2IiByZXN1bHQ9InNoYXBlIi8+CjwvZmlsdGVyPgo8bGluZWFyR3JhZGllbnQgaWQ9InBhaW50MF9saW5lYXJfMTE1MjdfMjY5NTYiIHgxPSItMzkuNjMyIiB5MT0iMzUuNDIzNiIgeDI9IjI4Mi43MTIiIHkyPSIxNzEuMDQ5IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CjxzdG9wIHN0b3AtY29sb3I9IiMzQjgyRjYiLz4KPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjM0I4MkY2Ii8+CjwvbGluZWFyR3JhZGllbnQ+CjxsaW5lYXJHcmFkaWVudCBpZD0icGFpbnQxX2xpbmVhcl8xMTUyN18yNjk1NiIgeDE9Ii00Ny4yMjQiIHkxPSI0MzIuMjkyIiB4Mj0iNDAyLjI1NSIgeTI9Ijg5LjU4MzYiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KPHN0b3Agc3RvcC1jb2xvcj0id2hpdGUiIHN0b3Atb3BhY2l0eT0iMC4xIi8+CjxzdG9wIG9mZnNldD0iMC41IiBzdG9wLWNvbG9yPSJ3aGl0ZSIgc3RvcC1vcGFjaXR5PSIwLjA0Ii8+CjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0id2hpdGUiIHN0b3Atb3BhY2l0eT0iMC4xIi8+CjwvbGluZWFyR3JhZGllbnQ+CjxjbGlwUGF0aCBpZD0iY2xpcDBfMTE1MjdfMjY5NTYiPgo8cmVjdCB3aWR0aD0iMzc1IiBoZWlnaHQ9IjUwMCIgZmlsbD0id2hpdGUiLz4KPC9jbGlwUGF0aD4KPC9kZWZzPgo8L3N2Zz4K
Arg [5] : level_ (uint256): 1
-----Encoded View---------------
410 Constructor Arguments found :
Arg [0] : 0000000000000000000000009800020b610194dba52cf606e8aa142f9f256166
Arg [1] : 000000000000000000000000638bc21b096e1be1434172c46a1aafeb40604a68
Arg [2] : 00000000000000000000000000000000000000000000000000000000000000c0
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000100
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000140
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [6] : 000000000000000000000000000000000000000000000000000000000000000d
Arg [7] : 466c7569642050617373204c3100000000000000000000000000000000000000
Arg [8] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [9] : 464c445031000000000000000000000000000000000000000000000000000000
Arg [10] : 00000000000000000000000000000000000000000000000000000000000031c8
Arg [11] : 50484e325a79423361575230614430694d7a63314969426f5a576c6e61485139
Arg [12] : 496a55774d434967646d6c6c64304a76654430694d43417749444d334e534131
Arg [13] : 4d44416949475a7062477739496d3576626d5569494868746247357a50534a6f
Arg [14] : 644852774f693876643364334c6e637a4c6d39795a7938794d4441774c334e32
Arg [15] : 5a79492b436a786e49474e7361584174634746306144306964584a734b434e6a
Arg [16] : 62476c774d4638784d5455794e3138794e6a6b314e696b6950676f38636d566a
Arg [17] : 6443423361575230614430694d7a63314969426f5a576c6e61485139496a5577
Arg [18] : 4d4349675a6d6c7362443069596d7868593273694c7a344b5047636762334268
Arg [19] : 59326c30655430694d4334324969426d615778305a584939496e56796243676a
Arg [20] : 5a6d6c73644756794d46396d587a45784e544933587a49324f5455324b53492b
Arg [21] : 436a786c6247787063484e6c49474e34505349794d5455754e5463334969426a
Arg [22] : 655430694d5451774c6a6b334d694967636e6739496a49334d7934344e545169
Arg [23] : 49484a35505349794e7a49754e5459354969426d6157787350534a31636d776f
Arg [24] : 49334268615735304d4639736157356c59584a664d5445314d6a64664d6a5935
Arg [25] : 4e5459704969382b436a77765a7a344b504763676233426859326c3065543069
Arg [26] : 4d4334344969426d615778305a584939496e56796243676a5a6d6c7364475679
Arg [27] : 4d56396d587a45784e544933587a49324f5455324b53492b436a786a61584a6a
Arg [28] : 6247556759336739496a4d324e5334344969426a655430694d546b314c6a4d78
Arg [29] : 4d794967636a30694d5441794c6a49314e7949675a6d6c7362443069497a4e43
Arg [30] : 4f444a474e69497650676f384c32632b436a786e4947397759574e7064486b39
Arg [31] : 496a41754e5349675a6d6c736447567950534a31636d776f49325a706248526c
Arg [32] : 636a4a665a6c38784d5455794e3138794e6a6b314e696b6950676f3859326c79
Arg [33] : 5932786c49474e34505349784d7934334d5451344969426a655430694d7a5133
Arg [34] : 4c6a4d354e694967636a30694d5463754d5467334e5349675a6d6c7362443069
Arg [35] : 497a4e434f444a474e69497650676f384c32632b436a786e49475a706248526c
Arg [36] : 636a306964584a734b434e6d615778305a58497a58324a664d5445314d6a6466
Arg [37] : 4d6a59354e545970496a344b50484a6c59335167654430694d5463754d7a5535
Arg [38] : 4e434967655430694d5463754d7a59784d79496764326c6b64476739496a4d30
Arg [39] : 4d4334794e7a67694947686c6157646f644430694e4459314c6a49334f434967
Arg [40] : 636e6739496a4d304c6a63794d6a496949475a7062477739496e646f6158526c
Arg [41] : 4969426d615778734c57397759574e7064486b39496a41754d4451694c7a344b
Arg [42] : 50484a6c59335167654430694d5463754f4467774d694967655430694d546375
Arg [43] : 4f4467794d69496764326c6b64476739496a4d7a4f5334794d7a59694947686c
Arg [44] : 6157646f644430694e4459304c6a497a4e694967636e6739496a4d304c6a4977
Arg [45] : 4d54516949484e30636d39725a54306964584a734b434e7759576c7564444666
Arg [46] : 62476c755a574679587a45784e544933587a49324f5455324b53496763335279
Arg [47] : 6232746c4c5864705a48526f505349784c6a41304d5459334969382b436a7776
Arg [48] : 5a7a344b50484268644767675a443069545451334c6a457a4d7a49674e445531
Arg [49] : 4c6a41794e3159304d7a51754f444931534459774c6a41334e5446574e444d33
Arg [50] : 4c6a67354d3067314d4334334f544935566a51304d79347a4e7a68494e546b75
Arg [51] : 4d5467334d3159304e4459754e445131534455774c6a63354d6a6c574e445531
Arg [52] : 4c6a41794e3067304e7934784d7a4d79576b30324d7934304d446b7949445131
Arg [53] : 4e5334774d6a64574e444d304c6a67794e5567324e7934774e6a6735566a5131
Arg [54] : 4d5334354e6b67334e5334354e6a5931566a51314e5334774d6a64494e6a4d75
Arg [55] : 4e4441354d6c704e4f5445754f4463334e5341304d7a51754f44493153446b31
Arg [56] : 4c6a557a4e7a4a574e4451344c6a41794e454d354e5334314d7a637949445130
Arg [57] : 4f5334304e7941354e5334784f545579494451314d4334334e444d674f545175
Arg [58] : 4e5445784d7941304e5445754f445178517a6b7a4c6a677a4d7a6b674e445579
Arg [59] : 4c6a6b7a4f5341354d6934344f444130494451314d7934334f5467674f544575
Arg [60] : 4e6a55774e6941304e5451754e444532517a6b774c6a51794d446b674e445531
Arg [61] : 4c6a41794e7941344f4334354f4451674e4455314c6a4d7a4d7941344e79347a
Arg [62] : 4e4341304e5455754d7a4d7a517a67314c6a59344f544d674e4455314c6a4d7a
Arg [63] : 4d7941344e4334794e446b79494451314e5334774d6a63674f444d754d444535
Arg [64] : 4e4341304e5451754e444532517a67784c6a63344f5463674e44557a4c6a6335
Arg [65] : 4f4341344d4334344d7a5978494451314d6934354d7a6b674f4441754d545534
Arg [66] : 4f4341304e5445754f445178517a63354c6a51344d5451674e4455774c6a6330
Arg [67] : 4d7941334f5334784e444934494451304f5334304e7941334f5334784e444934
Arg [68] : 494451304f4334774d6a52574e444d304c6a67794e5567344d6934344d444930
Arg [69] : 566a51304e7934334d5468444f4449754f4441794e4341304e4467754e545967
Arg [70] : 4f4449754f5467324e5341304e446b754d7a41354944677a4c6a4d314e446767
Arg [71] : 4e4451354c6a6b324e304d344d7934334d6a6b32494451314d4334324d6a5567
Arg [72] : 4f4451754d6a55314e7941304e5445754d545178494467304c6a6b7a4d7a4567
Arg [73] : 4e4455784c6a55784e6b4d344e5334324d544130494451314d5334344f445167
Arg [74] : 4f4459754e4445794e7941304e5449754d445934494467334c6a4d3049445131
Arg [75] : 4d6934774e6a68444f4467754d6a59334d6941304e5449754d44593449446735
Arg [76] : 4c6a41324f5455674e4455784c6a67344e4341344f5334334e44593449445131
Arg [77] : 4d5334314d545a444f5441754e444d774f4341304e5445754d54517849446b77
Arg [78] : 4c6a6b314e6a6b674e4455774c6a59794e5341354d53347a4d6a557849445130
Arg [79] : 4f5334354e6a64444f5445754e6a6b7a4e4341304e446b754d7a413549446b78
Arg [80] : 4c6a67334e7a55674e4451344c6a553249446b784c6a67334e7a55674e445133
Arg [81] : 4c6a63784f4659304d7a51754f444931576b30784d444d754d5463314944517a
Arg [82] : 4e4334344d6a56574e4455314c6a41794e3067354f5334314d545135566a517a
Arg [83] : 4e4334344d6a56494d54417a4c6a45334e56704e4d54457a4c6a6b344d794130
Arg [84] : 4e5455754d444933534445774e7934784d7a68574e444d304c6a67794e556778
Arg [85] : 4d5451754d544978517a45784e6934784d6a63674e444d304c6a67794e534178
Arg [86] : 4d5463754f4455674e444d314c6a497a494445784f5334794f5341304d7a5975
Arg [87] : 4d444d35517a45794d4334334d7a63674e444d324c6a67304d5341784d6a4575
Arg [88] : 4f4451344944517a4e7934354f5455674d5449794c6a59794e4341304d7a6b75
Arg [89] : 4e544178517a45794d793430494451304d5334774d4463674d54497a4c6a6334
Arg [90] : 4f4341304e4449754f444135494445794d7934334f4467674e4451304c6a6b77
Arg [91] : 4e304d784d6a4d754e7a6734494451304e7934774d5445674d54497a4c6a4d35
Arg [92] : 4e7941304e4467754f444535494445794d6934324d5455674e4455774c6a4d7a
Arg [93] : 4d6b4d784d6a45754f444d35494451314d5334344e4451674d5449774c6a6378
Arg [94] : 4e7941304e544d754d444131494445784f5334794e5445674e44557a4c6a6778
Arg [95] : 4e454d784d5463754e7a6b78494451314e4334324d6a4d674d5445324c6a417a
Arg [96] : 4e5341304e5455754d444933494445784d7934354f444d674e4455314c6a4179
Arg [97] : 4e31704e4d5445774c6a63354e7941304e5445754f445978534445784d793434
Arg [98] : 4d445a444d5445314c6a49784d7941304e5445754f445978494445784e69347a
Arg [99] : 4f4463674e4455784c6a59774e4341784d5463754d7a4933494451314d533477
Arg [100] : 4f544a444d5445344c6a49324f4341304e5441754e546379494445784f433435
Arg [101] : 4e7a55674e4451354c6a63354f5341784d546b754e445134494451304f433433
Arg [102] : 4e7a4e444d5445354c6a6b794d6941304e4463754e7a5178494445794d433478
Arg [103] : 4e5467674e4451324c6a51314d6941784d6a41754d545534494451304e433435
Arg [104] : 4d4464444d5449774c6a45314f4341304e444d754d7a5978494445784f533435
Arg [105] : 4d6a49674e4451794c6a41334f5341784d546b754e445134494451304d533477
Arg [106] : 4e6b4d784d5467754f546331494451304d4334774d7a51674d5445344c6a4933
Arg [107] : 4e4341304d7a6b754d6a5934494445784e79347a4e4463674e444d344c6a6332
Arg [108] : 4d554d784d5459754e4449324944517a4f4334794e4467674d5445314c6a4934
Arg [109] : 4d6941304d7a63754f546b79494445784d7934354d5451674e444d334c6a6b35
Arg [110] : 4d6b67784d5441754e7a6b33566a51314d5334344e6a46614969426d61577873
Arg [111] : 50534a3361476c305a53497650676f38636d566a64434234505349794e7a6375
Arg [112] : 4d444933496942355053497a4f4334784f54517a496942336157523061443069
Arg [113] : 4e546b754e7a63334f434967614756705a3268305053497a4f4334344d7a4d7a
Arg [114] : 49694279654430694d546b754e4445324e7949675a6d6c7362443069596d7868
Arg [115] : 5932736949475a70624777746233426859326c30655430694d4334794969382b
Arg [116] : 436a78775958526f49475139496b30794f5451754e7a49674e5441754f546731
Arg [117] : 4d5659324d7934324d54457a534449354d6934344e7a64574e5441754f546731
Arg [118] : 4d5567794f5451754e7a4a6154544d774e53347a4d4445674e5451754d545178
Arg [119] : 4e6b777a4d4445754f4459334944597a4c6a59784d544e494d6a6b354c6a6735
Arg [120] : 4e4577794f5459754e445530494455304c6a45304d545a494d6a6b344c6a517a
Arg [121] : 4d30777a4d4441754f444d78494459784c6a51794f446c494d7a41774c6a6b7a
Arg [122] : 54444d774d79347a4d6a49674e5451754d5451784e6b677a4d4455754d7a4178
Arg [123] : 576b307a4d4467754f446333494455774c6a6b344e5446574e6a4d754e6a4578
Arg [124] : 4d30677a4d4463754d444d7a566a55774c6a6b344e5446494d7a41344c6a6733
Arg [125] : 4e31704e4d7a49774c6a63784e7941314d4334354f445578566a597a4c6a5978
Arg [126] : 4d544e494d7a45344c6a67774e6c59314d6934344f54597a53444d784f433433
Arg [127] : 4d7a4a4d4d7a45314c6a63784d5341314e4334344e6a6b78566a557a4c6a4130
Arg [128] : 4e444a4d4d7a45344c6a67324d5341314d4334354f44557853444d794d433433
Arg [129] : 4d5464614969426d6157787350534a3361476c305a53497650676f385a79426d
Arg [130] : 615778305a584939496e56796243676a5a6d6c73644756794e46396b587a4578
Arg [131] : 4e544933587a49324f5455324b53492b436a78775958526f49475a7062477774
Arg [132] : 636e56735a5430695a585a6c626d396b5a43496759327870634331796457786c
Arg [133] : 50534a6c646d56756232526b4969426b50534a4e4d6a67784c6a4d354f534179
Arg [134] : 4d6a55754e446b79517a49334e4334774e5341794d5441754d54493449444932
Arg [135] : 4e5334304f4341784f5455754d7a6378494449314e5334334e7a45674d546778
Arg [136] : 4c6a4d324d5577794e5449754e6a51674d5463324c6a67344e6b4d794e446775
Arg [137] : 4e7a6730494445334d53347a4d6a55674d6a517a4c6a637a4d5341784e6a5975
Arg [138] : 4e6a67334944497a4e7934344e4463674d54597a4c6a4d78517a497a4d533435
Arg [139] : 4e6a51674d5455354c6a6b7a4d7941794d6a55754d7a6b32494445314e793435
Arg [140] : 4d4449674d6a45344c6a59794e4341784e5463754d7a5930544449784d793478
Arg [141] : 4d6a59674d5455324c6a6b794e454d784f5459754d445934494445314e533431
Arg [142] : 4e6a49674d5463344c6a6b794f5341784e5455754e545979494445324d533434
Arg [143] : 4e7a49674d5455324c6a6b794e4577784e5459754d7a6330494445314e79347a
Arg [144] : 4e6a52444d5451354c6a59774d6941784e5463754f544179494445304d793477
Arg [145] : 4d7a55674d5455354c6a6b7a4d7941784d7a63754d545578494445324d79347a
Arg [146] : 4d554d784d7a45754d6a5933494445324e6934324f4463674d5449324c6a4978
Arg [147] : 4e4341784e7a45754d7a4931494445794d69347a4e5467674d5463324c6a6734
Arg [148] : 4e6b77784d546b754d6a4933494445344d5334304d4446444d5441354c6a5578
Arg [149] : 4f4341784f5455754e444578494445774d4334354e4467674d6a45774c6a4532
Arg [150] : 4f4341354d7934314f546b32494449794e5334314d7a4a4d4f5445754d6a4d7a
Arg [151] : 4d6941794d7a41754e446333517a67344c6a4d784e7a55674d6a4d324c6a5533
Arg [152] : 4e7941344e6934344d445133494449304d7934794e4459674f4459754f444130
Arg [153] : 4e7941794e5442444f4459754f4441304e7941794e5459754e7a557a49446734
Arg [154] : 4c6a4d784e7a55674d6a597a4c6a51794d6941354d5334794d7a4d7949444932
Arg [155] : 4f5334314d6a4a4d4f544d754e546b354e6941794e7a51754e445933517a4577
Arg [156] : 4d4334354e4467674d6a67354c6a677a4d6941784d446b754e54453449444d77
Arg [157] : 4e4334314f446b674d5445354c6a49794e79417a4d5467754e546b3454444579
Arg [158] : 4d69347a4e5467674d7a497a4c6a45784d304d784d6a59754d6a453049444d79
Arg [159] : 4f4334324e7a51674d544d784c6a49324e79417a4d7a4d754d7a45794944457a
Arg [160] : 4e7934784e5445674d7a4d324c6a59344f554d784e444d754d444d3149444d30
Arg [161] : 4d4334774e6a59674d5451354c6a59774d69417a4e4449754d446b3449444531
Arg [162] : 4e69347a4e7a51674d7a51794c6a597a4e5577784e6a45754f44637949444d30
Arg [163] : 4d7934774e7a5a444d5463344c6a6b794f53417a4e4451754e444d3349444535
Arg [164] : 4e6934774e6a67674d7a51304c6a517a4e7941794d544d754d54493249444d30
Arg [165] : 4d7934774e7a5a4d4d6a45344c6a59794e43417a4e4449754e6a4d31517a4979
Arg [166] : 4e5334304d4445674d7a51794c6a41354944497a4d5334354e7a49674d7a5177
Arg [167] : 4c6a41314944497a4e7934344e5455674d7a4d324c6a59324d6b4d794e444d75
Arg [168] : 4e7a51674d7a4d7a4c6a49334e4341794e4467754e7a6b674d7a49344c6a5979
Arg [169] : 4e5341794e5449754e6a51674d7a497a4c6a41314d3077794e5455754e7a6378
Arg [170] : 49444d784f4334314d7a68444d6a59314c6a513449444d774e4334314d6a6b67
Arg [171] : 4d6a63304c6a4131494449344f5334334e7a49674d6a67784c6a4d354f534179
Arg [172] : 4e7a51754e444133544449344d7934334e6a55674d6a59354c6a51324d6b4d79
Arg [173] : 4f4459754e6a67674d6a597a4c6a4d324d6941794f4467754d546b3049444931
Arg [174] : 4e6934324f544d674d6a67344c6a45354e4341794e446b754f544d35517a4934
Arg [175] : 4f4334784f5451674d6a517a4c6a45344e6941794f4459754e6a67674d6a4d32
Arg [176] : 4c6a55784e7941794f444d754e7a59314944497a4d4334304d54644d4d6a6778
Arg [177] : 4c6a4d354f5341794d6a55754e446b79576949675a6d6c736244306964326870
Arg [178] : 644755694c7a344b5043396e50676f385a79426d615778305a584939496e5679
Arg [179] : 6243676a5a6d6c73644756794e56396b587a45784e544933587a49324f545532
Arg [180] : 4b53492b436a78775958526f49475139496b30794e4463754f54453249444930
Arg [181] : 4e79347a4f4452444d6a51324c6a59304d5341794d5463754d54593149444979
Arg [182] : 4d79347a4e6a6b674d546b794c6a59324e4341784f544d754e7a63674d546735
Arg [183] : 4c6a59784d304d784f5441754d7a4d31494445344f5334794e5463674d546733
Arg [184] : 4c6a55794f4341784f5449754d544130494445344e7934314d6a67674d546b31
Arg [185] : 4c6a55334d3159794d5449754d7a4a444d5467334c6a55794f4341794d545575
Arg [186] : 4e7a6734494445354d43347a4e5451674d6a45344c6a557a4e5341784f544d75
Arg [187] : 4e7a5178494449784f5334794d546c444d6a41314c6a4d324d6941794d6a4575
Arg [188] : 4e546330494449784e4334324e5341794d7a41754e4341794d5463754e7a457a
Arg [189] : 494449304d5334334f5452444d6a45344c6a6b314d7941794e4445754d7a5935
Arg [190] : 494449794d43347a4e6a51674d6a51784c6a45774f5341794d6a45754f546b30
Arg [191] : 494449304d5334784d444e444d6a49334c6a5979494449304d5334784d6a6b67
Arg [192] : 4d6a4d774c6a59314e5341794e4451754d6a55784944497a4d7934774d694179
Arg [193] : 4e4459754e7a6332517a497a4e5334794d7a49674d6a51354c6a45774e694179
Arg [194] : 4d7a59754f546b32494449314d4334354d7a55674d6a51774c6a59354e694179
Arg [195] : 4e5441754f546735517a49304e4334784e4449674d6a55774c6a6b354e534179
Arg [196] : 4e4455754f544131494449304f5334304d7a4d674d6a51334c6a6b784e694179
Arg [197] : 4e4463754d7a6730576949675a6d6c7362443069497a4d324e6b5a4752694976
Arg [198] : 50676f38634746306143426b50534a4e4d5459774c6a63354e4341784f545575
Arg [199] : 4e544d33517a45324e4334324d4463674d546b7a4c6a59304e7941784e6a6775
Arg [200] : 4e7a5935494445354e6934324e5463674d5459344c6a63324f5341794d444175
Arg [201] : 4f544934566a49304d5334794e6a68444d54597a4c6a457a4f5341794e444575
Arg [202] : 4d7a4134494445324d4334784d7a59674d6a51304c6a4d324f5341784e546375
Arg [203] : 4e7a597a494449304e6934344e546c4d4d5455334c6a63784d7941794e445975
Arg [204] : 4f5446444d5455314c6a51354e7941794e446b754d546732494445314d793433
Arg [205] : 4d7a63674d6a55774c6a6b354e5341784e5441754d444d674d6a55774c6a6b34
Arg [206] : 4f554d784e4459754d7a4d674d6a55774c6a6b7a4e5341784e4451754e545931
Arg [207] : 494449304f5334784d4459674d5451794c6a4d314e4341794e4459754e7a6332
Arg [208] : 517a457a4f5334354f446b674d6a51304c6a49314d5341784d7a59754f54557a
Arg [209] : 494449304d5334784d6a6b674d544d784c6a4d794f4341794e4445754d54417a
Arg [210] : 517a45794f5334354e5467674d6a51784c6a45774f4341784d6a67754e7a5130
Arg [211] : 494449304d5334794f5449674d5449334c6a59314e6941794e4445754e6a417a
Arg [212] : 517a457a4d4334304e4467674d6a49784c6a4d7a4e4341784e444d754d6a417a
Arg [213] : 494449774e4334794e6a4d674d5459774c6a63354e4341784f5455754e544d33
Arg [214] : 576949675a6d6c7362443069497a4d324e6b5a475269497650676f3863474630
Arg [215] : 6143426b50534a4e4d546b7a4c6a63324f53417a4d5441754d7a6733517a4535
Arg [216] : 4d43347a4d7a55674d7a45774c6a63304d5341784f4463754e54493349444d77
Arg [217] : 4e7934344f5459674d5467334c6a55794e79417a4d4451754e444933566a4934
Arg [218] : 4e7934324f4446444d5467334c6a55794e7941794f4451754d6a453049444535
Arg [219] : 4d43347a4e544d674d6a67784c6a51324e5341784f544d754e7a51674d6a6777
Arg [220] : 4c6a63344d554d794d4467754d444d674d6a63334c6a67344e6941794d546775
Arg [221] : 4e7a6b78494449324e5334794d4459674d6a45344c6a63354d5341794e544244
Arg [222] : 4d6a45344c6a63354d5341794e446b754f445979494449784f4334334f534179
Arg [223] : 4e446b754e7a4930494449784f4334334f4467674d6a51354c6a55344e6b4d79
Arg [224] : 4d546b754e6a6b32494449304f5334794d546b674d6a49774c6a637a4e534179
Arg [225] : 4e446b754d444135494449794d6934774d4445674d6a51354c6a41784d554d79
Arg [226] : 4d6a55754e7a4178494449304f5334774e6a55674d6a49334c6a51324e694179
Arg [227] : 4e5441754f446b31494449794f5334324e7a63674d6a557a4c6a49794e454d79
Arg [228] : 4d7a49754d445179494449314e5334334e446b674d6a4d314c6a41334f434179
Arg [229] : 4e5467754f446378494449304d4334334d444d674d6a55344c6a67354e304d79
Arg [230] : 4e444d754e546b33494449314f4334344f4459674d6a51314c6a63354f534179
Arg [231] : 4e5467754d446334494449304e7934314e7a67674d6a55324c6a6b314e304d79
Arg [232] : 4e4451754d7a6331494449344e5334784e5451674d6a49784c6a6b7a4e79417a
Arg [233] : 4d4463754e446730494445354d7934334e6a6b674d7a45774c6a4d344e316f69
Arg [234] : 49475a706247773949694d774d445247515455694c7a344b5048426864476767
Arg [235] : 5a443069545445794e7934774f4449674d6a55774c6a45774e554d784d6a6375
Arg [236] : 4d544979494449334d7934354e5341784e4441754f445135494449354e433431
Arg [237] : 4e7941784e6a41754e7a6b7a49444d774e4334304e6a4e444d5459304c6a5977
Arg [238] : 4e69417a4d4459754d7a557a494445324f4334334e6a67674d7a417a4c6a4d30
Arg [239] : 4d7941784e6a67754e7a5934494449354f5334774e7a4a574d6a51354c6a4533
Arg [240] : 4e6b4d784e6a55754d446b35494449304f5334784f446b674d54597a4c6a4d30
Arg [241] : 4e6941794e5441754f546b78494445324d5334784e4445674d6a557a4c6a4931
Arg [242] : 4e6b77784e6a45754d446b78494449314d79347a4d4464444d5455344c6a6378
Arg [243] : 4d5341794e5455754f44417a494445314e5334324f5467674d6a55344c6a6733
Arg [244] : 4e5341784e5441754d444d33494449314f4334344f5464444d5451304c6a5178
Arg [245] : 4d5341794e5467754f446378494445304d53347a4e7a59674d6a55314c6a6330
Arg [246] : 4f5341784d7a6b754d444578494449314d7934794d6a52444d544d324c6a6335
Arg [247] : 4f5341794e5441754f446b314944457a4e5334774d7a55674d6a51354c6a4132
Arg [248] : 4e5341784d7a45754d7a4d31494449304f5334774d5446444d5449354c6a5531
Arg [249] : 4f4341794e446b754d444134494445794f4334794d6a6b674d6a51354c6a5179
Arg [250] : 4d6941784d6a63754d446779494449314d4334784d4456614969426d61577873
Arg [251] : 5053496a4d444130526b45314969382b436a77765a7a344b5043396e50676f38
Arg [252] : 5a47566d637a344b50475a706248526c636942705a4430695a6d6c7364475679
Arg [253] : 4d46396d587a45784e544933587a49324f54553249694234505349744d6a6730
Arg [254] : 4c6a51314d694967655430694c544d314e7934334e7a4969494864705a48526f
Arg [255] : 505349784d4441774c6a41324969426f5a576c6e61485139496a6b354e793430
Arg [256] : 4f44676949475a706248526c636c56756158527a50534a316332567955334268
Arg [257] : 59325650626c567a5a5349675932397362334974615735305a584a7762327868
Arg [258] : 64476c766269316d615778305a584a7a50534a7a556b6443496a344b50475a6c
Arg [259] : 526d7876623251675a6d7876623251746233426859326c30655430694d434967
Arg [260] : 636d567a6457783050534a4359574e725a334a766457356b535731685a325647
Arg [261] : 615867694c7a344b50475a6c516d786c626d51676257396b5a543069626d3979
Arg [262] : 6257467349694270626a306955323931636d4e6c52334a686347687059794967
Arg [263] : 6157347950534a4359574e725a334a766457356b535731685a32564761586769
Arg [264] : 49484a6c633356736444306963326868634755694c7a344b50475a6c52324631
Arg [265] : 63334e70595735436248567949484e305a45526c646d6c6864476c76626a3069
Arg [266] : 4d54457a4c6a41344e794967636d567a6457783050534a6c5a6d5a6c59335178
Arg [267] : 58325a76636d566e636d3931626d524362485679587a45784e544933587a4932
Arg [268] : 4f5455324969382b436a77765a6d6c736447567950676f385a6d6c7364475679
Arg [269] : 49476c6b50534a6d615778305a58497858325a664d5445314d6a64664d6a5935
Arg [270] : 4e54596949486739496a45354f5334304f446b6949486b39496a49354c6a4177
Arg [271] : 4d6a4569494864705a48526f5053497a4d7a49754e6a497a4969426f5a576c6e
Arg [272] : 61485139496a4d7a4d6934324d6a456949475a706248526c636c56756158527a
Arg [273] : 50534a31633256795533426859325650626c567a5a5349675932397362334974
Arg [274] : 615735305a584a776232786864476c766269316d615778305a584a7a50534a7a
Arg [275] : 556b6443496a344b50475a6c526d7876623251675a6d78766232517462334268
Arg [276] : 59326c30655430694d434967636d567a6457783050534a4359574e725a334a76
Arg [277] : 6457356b535731685a325647615867694c7a344b50475a6c516d786c626d5167
Arg [278] : 6257396b5a543069626d39796257467349694270626a306955323931636d4e6c
Arg [279] : 52334a6863476870597949676157347950534a4359574e725a334a766457356b
Arg [280] : 535731685a3256476158676949484a6c63335673644430696332686863475569
Arg [281] : 4c7a344b50475a6c5232463163334e70595735436248567949484e305a45526c
Arg [282] : 646d6c6864476c76626a30694d7a49754d4449324f434967636d567a64577830
Arg [283] : 50534a6c5a6d5a6c5933517858325a76636d566e636d3931626d524362485679
Arg [284] : 587a45784e544933587a49324f5455324969382b436a77765a6d6c7364475679
Arg [285] : 50676f385a6d6c736447567949476c6b50534a6d615778305a58497958325a66
Arg [286] : 4d5445314d6a64664d6a59354e54596949486739496930784d7934344f446b7a
Arg [287] : 496942355053497a4d546b754e7a6b784969423361575230614430694e545575
Arg [288] : 4d6a41344d794967614756705a326830505349314e5334794d44677a4969426d
Arg [289] : 615778305a584a56626d6c30637a306964584e6c636c4e7759574e6c54323556
Arg [290] : 6332556949474e76624739794c576c7564475679634739735958527062323474
Arg [291] : 5a6d6c7364475679637a306963314a485169492b436a786d5a555a736232396b
Arg [292] : 49475a736232396b4c57397759574e7064486b39496a416949484a6c63335673
Arg [293] : 64443069516d466a61326479623356755a456c745957646c526d6c344969382b
Arg [294] : 436a786d5a554a735a57356b494731765a475539496d3576636d316862434967
Arg [295] : 61573439496c4e7664584a6a5a5564795958426f61574d6949476c754d6a3069
Arg [296] : 516d466a61326479623356755a456c745957646c526d6c34496942795a584e31
Arg [297] : 62485139496e4e6f5958426c4969382b436a786d5a55646864584e7a61574675
Arg [298] : 516d78316369427a644752455a585a705958527062323439496a55754d6a4134
Arg [299] : 4d7a4d6949484a6c63335673644430695a575a6d5a574e304d56396d62334a6c
Arg [300] : 5a334a766457356b516d7831636c38784d5455794e3138794e6a6b314e694976
Arg [301] : 50676f384c325a706248526c636a344b50475a706248526c636942705a443069
Arg [302] : 5a6d6c73644756794d313969587a45784e544933587a49324f54553249694234
Arg [303] : 505349744d7a67754d546b324d694967655430694c544d344c6a45354e444969
Arg [304] : 494864705a48526f505349304e5445754d7a67344969426f5a576c6e61485139
Arg [305] : 496a55334e69347a4f44676949475a706248526c636c56756158527a50534a31
Arg [306] : 633256795533426859325650626c567a5a534967593239736233497461573530
Arg [307] : 5a584a776232786864476c766269316d615778305a584a7a50534a7a556b6443
Arg [308] : 496a344b50475a6c526d7876623251675a6d7876623251746233426859326c30
Arg [309] : 655430694d434967636d567a6457783050534a4359574e725a334a766457356b
Arg [310] : 535731685a325647615867694c7a344b50475a6c5232463163334e7059573543
Arg [311] : 6248567949476c7550534a4359574e725a334a766457356b535731685a325647
Arg [312] : 6158676949484e305a45526c646d6c6864476c76626a30694d6a63754e7a6333
Arg [313] : 4f43497650676f385a6d56446232317762334e70644755676157347950534a54
Arg [314] : 62335679593256426248426f595349676233426c636d463062334939496d6c75
Arg [315] : 496942795a584e3162485139496d566d5a6d566a64444666596d466a61326479
Arg [316] : 623356755a454a7364584a664d5445314d6a64664d6a59354e5459694c7a344b
Arg [317] : 50475a6c516d786c626d51676257396b5a543069626d39796257467349694270
Arg [318] : 626a306955323931636d4e6c52334a6863476870597949676157347950534a6c
Arg [319] : 5a6d5a6c5933517858324a685932746e636d3931626d524362485679587a4578
Arg [320] : 4e544933587a49324f545532496942795a584e3162485139496e4e6f5958426c
Arg [321] : 4969382b436a77765a6d6c736447567950676f385a6d6c736447567949476c6b
Arg [322] : 50534a6d615778305a584930583252664d5445314d6a64664d6a59354e545969
Arg [323] : 49486739496a4d7a4c6a4d7a4d6a556949486b39496a45774e5334354d444969
Arg [324] : 494864705a48526f5053497a4d4467754d7a4d314969426f5a576c6e61485139
Arg [325] : 496a49354e5334784d7a6b6949475a706248526c636c56756158527a50534a31
Arg [326] : 633256795533426859325650626c567a5a534967593239736233497461573530
Arg [327] : 5a584a776232786864476c766269316d615778305a584a7a50534a7a556b6443
Arg [328] : 496a344b50475a6c526d7876623251675a6d7876623251746233426859326c30
Arg [329] : 655430694d434967636d567a6457783050534a4359574e725a334a766457356b
Arg [330] : 535731685a325647615867694c7a344b50475a6c5132397362334a4e59585279
Arg [331] : 6158676761573439496c4e7664584a6a5a55467363476868496942306558426c
Arg [332] : 50534a74595852796158676949485a686248566c637a30694d43417749444167
Arg [333] : 4d434177494441674d434177494441674d434177494441674d43417749444167
Arg [334] : 4d434177494441674d5449334944416949484a6c633356736444306961474679
Arg [335] : 5a454673634768684969382b436a786d5a55396d5a6e4e6c6443426b65543069
Arg [336] : 4d7934304e7a49794d69497650676f385a6d56485958567a63326c68626b4a73
Arg [337] : 645849676333526b524756326157463061573975505349794e6934334d7a5978
Arg [338] : 4969382b436a786d5a554e766258427663326c305a534270626a4939496d6868
Arg [339] : 636d52426248426f595349676233426c636d463062334939496d393164434976
Arg [340] : 50676f385a6d564462327876636b316864484a70654342306558426c50534a74
Arg [341] : 595852796158676949485a686248566c637a30694d434177494441674d434178
Arg [342] : 494441674d434177494441674d534177494441674d434177494445674d434177
Arg [343] : 494441674d43347a4e5341774969382b436a786d5a554a735a57356b49473176
Arg [344] : 5a475539496d3576636d3168624349676157347950534a4359574e725a334a76
Arg [345] : 6457356b535731685a3256476158676949484a6c63335673644430695a575a6d
Arg [346] : 5a574e304d56396b636d3977553268685a473933587a45784e544933587a4932
Arg [347] : 4f5455324969382b436a786d5a554a735a57356b494731765a475539496d3576
Arg [348] : 636d31686243496761573439496c4e7664584a6a5a5564795958426f61574d69
Arg [349] : 49476c754d6a30695a575a6d5a574e304d56396b636d3977553268685a473933
Arg [350] : 587a45784e544933587a49324f545532496942795a584e3162485139496e4e6f
Arg [351] : 5958426c4969382b436a77765a6d6c736447567950676f385a6d6c7364475679
Arg [352] : 49476c6b50534a6d615778305a584931583252664d5445314d6a64664d6a5935
Arg [353] : 4e54596949486739496a51774c6a49334e6a556949486b39496a45774e433478
Arg [354] : 4e6a5969494864705a48526f505349794f5451754e4451334969426f5a576c6e
Arg [355] : 61485139496a49354e4334304e44556949475a706248526c636c56756158527a
Arg [356] : 50534a31633256795533426859325650626c567a5a5349675932397362334974
Arg [357] : 615735305a584a776232786864476c766269316d615778305a584a7a50534a7a
Arg [358] : 556b6443496a344b50475a6c526d7876623251675a6d78766232517462334268
Arg [359] : 59326c30655430694d434967636d567a6457783050534a4359574e725a334a76
Arg [360] : 6457356b535731685a325647615867694c7a344b50475a6c5132397362334a4e
Arg [361] : 595852796158676761573439496c4e7664584a6a5a5546736347686849694230
Arg [362] : 6558426c50534a74595852796158676949485a686248566c637a30694d434177
Arg [363] : 494441674d434177494441674d434177494441674d434177494441674d434177
Arg [364] : 494441674d434177494441674d5449334944416949484a6c6333567364443069
Arg [365] : 614746795a454673634768684969382b436a786d5a55396d5a6e4e6c6443426b
Arg [366] : 655430694d53347a4f4467344f53497650676f385a6d56485958567a63326c68
Arg [367] : 626b4a73645849676333526b524756326157463061573975505349304d793430
Arg [368] : 4d4449344969382b436a786d5a554e766258427663326c305a534270626a4939
Arg [369] : 496d6868636d52426248426f595349676233426c636d463062334939496d3931
Arg [370] : 6443497650676f385a6d564462327876636b316864484a70654342306558426c
Arg [371] : 50534a74595852796158676949485a686248566c637a30694d43417749444167
Arg [372] : 4d4341774c6a49354f44417a4f534177494441674d434177494441754e445530
Arg [373] : 4f544179494441674d434177494441674d4334354e6a51334d4459674d434177
Arg [374] : 494441674d4334304e5341774969382b436a786d5a554a735a57356b49473176
Arg [375] : 5a475539496d3576636d3168624349676157347950534a4359574e725a334a76
Arg [376] : 6457356b535731685a3256476158676949484a6c63335673644430695a575a6d
Arg [377] : 5a574e304d56396b636d3977553268685a473933587a45784e544933587a4932
Arg [378] : 4f5455324969382b436a786d5a554a735a57356b494731765a475539496d3576
Arg [379] : 636d31686243496761573439496c4e7664584a6a5a5564795958426f61574d69
Arg [380] : 49476c754d6a30695a575a6d5a574e304d56396b636d3977553268685a473933
Arg [381] : 587a45784e544933587a49324f545532496942795a584e3162485139496e4e6f
Arg [382] : 5958426c4969382b436a77765a6d6c736447567950676f3862476c755a574679
Arg [383] : 52334a685a476c6c626e516761575139496e4268615735304d4639736157356c
Arg [384] : 59584a664d5445314d6a64664d6a59354e54596949486778505349744d7a6b75
Arg [385] : 4e6a4d79496942354d5430694d7a55754e44497a4e69496765444939496a4934
Arg [386] : 4d6934334d54496949486b79505349784e7a45754d4451354969426e636d466b
Arg [387] : 61575675644656756158527a50534a31633256795533426859325650626c567a
Arg [388] : 5a53492b436a787a6447397749484e3062334174593239736233493949694d7a
Arg [389] : 516a6779526a59694c7a344b50484e306233416762325a6d6332563050534978
Arg [390] : 4969427a644739774c574e76624739795053496a4d3049344d6b59324969382b
Arg [391] : 436a777662476c755a57467952334a685a476c6c626e512b436a78736157356c
Arg [392] : 59584a48636d466b61575675644342705a44306963474670626e517858327870
Arg [393] : 626d5668636c38784d5455794e3138794e6a6b314e6949676544453949693030
Arg [394] : 4e7934794d6a516949486b78505349304d7a49754d6a6b79496942344d6a3069
Arg [395] : 4e4441794c6a49314e53496765544939496a67354c6a55344d7a596949476479
Arg [396] : 595752705a5735305657357064484d39496e567a5a584a546347466a5a553975
Arg [397] : 56584e6c496a344b50484e3062334167633352766343316a62327876636a3069
Arg [398] : 643268706447556949484e30623341746233426859326c30655430694d433478
Arg [399] : 4969382b436a787a644739774947396d5a6e4e6c644430694d4334314969427a
Arg [400] : 644739774c574e766247397950534a3361476c305a5349676333527663433176
Arg [401] : 6347466a61585235505349774c6a41304969382b436a787a644739774947396d
Arg [402] : 5a6e4e6c644430694d534967633352766343316a62327876636a306964326870
Arg [403] : 6447556949484e30623341746233426859326c30655430694d4334784969382b
Arg [404] : 436a777662476c755a57467952334a685a476c6c626e512b436a786a62476c77
Arg [405] : 55474630614342705a44306959327870634442664d5445314d6a64664d6a5935
Arg [406] : 4e54596950676f38636d566a6443423361575230614430694d7a63314969426f
Arg [407] : 5a576c6e61485139496a55774d4349675a6d6c73624430696432687064475569
Arg [408] : 4c7a344b5043396a62476c77554746306144344b5043396b5a575a7a50676f38
Arg [409] : 4c334e325a7a344b000000000000000000000000000000000000000000000000
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.