Overview
ETH Balance
0 ETH
ETH Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 2,881 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Mint With Game I... | 1836126 | 2 mins ago | IN | 0 ETH | 0.00003803 | ||||
Mint With Game I... | 1835996 | 5 mins ago | IN | 0 ETH | 0.00002831 | ||||
Mint With Game I... | 1835775 | 9 mins ago | IN | 0 ETH | 0.00003548 | ||||
Mint With Game I... | 1835456 | 14 mins ago | IN | 0 ETH | 0.00003251 | ||||
Mint With Game I... | 1835020 | 22 mins ago | IN | 0 ETH | 0.00002766 | ||||
Mint With Game I... | 1834967 | 23 mins ago | IN | 0 ETH | 0.00002707 | ||||
Mint With Game I... | 1834933 | 23 mins ago | IN | 0 ETH | 0.00002806 | ||||
Mint With Game I... | 1834857 | 24 mins ago | IN | 0 ETH | 0.00003285 | ||||
Mint With Game I... | 1834693 | 28 mins ago | IN | 0 ETH | 0.00002707 | ||||
Mint With Game I... | 1834678 | 28 mins ago | IN | 0 ETH | 0.00002685 | ||||
Mint With Game I... | 1834590 | 29 mins ago | IN | 0 ETH | 0.00002651 | ||||
Mint With Game I... | 1834466 | 31 mins ago | IN | 0 ETH | 0.00002671 | ||||
Mint With Game I... | 1834157 | 36 mins ago | IN | 0 ETH | 0.00003804 | ||||
Mint With Game I... | 1834025 | 39 mins ago | IN | 0 ETH | 0.00002688 | ||||
Mint With Game I... | 1833706 | 44 mins ago | IN | 0 ETH | 0.00003581 | ||||
Mint With Game I... | 1832930 | 58 mins ago | IN | 0 ETH | 0.00002676 | ||||
Mint With Game I... | 1832912 | 58 mins ago | IN | 0 ETH | 0.00002707 | ||||
Mint With Game I... | 1832876 | 1 hrs ago | IN | 0 ETH | 0.00002704 | ||||
Mint With Game I... | 1832696 | 1 hr ago | IN | 0 ETH | 0.00003553 | ||||
Mint With Game I... | 1832493 | 1 hr ago | IN | 0 ETH | 0.0000351 | ||||
Mint With Game I... | 1831730 | 1 hr ago | IN | 0 ETH | 0.00003597 | ||||
Mint With Game I... | 1831283 | 1 hr ago | IN | 0 ETH | 0.00002802 | ||||
Mint With Game I... | 1831267 | 1 hr ago | IN | 0 ETH | 0.00003354 | ||||
Mint With Game I... | 1831160 | 1 hr ago | IN | 0 ETH | 0.00002835 | ||||
Mint With Game I... | 1830924 | 1 hr ago | IN | 0 ETH | 0.00002835 |
Latest 1 internal transaction
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
1299296 | 6 days ago | Contract Creation | 0 ETH |
Loading...
Loading
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.
Contract Source Code Verified (Exact Match)
Contract Name:
AccountSystem
Compiler Version
v0.8.28+commit.7893614a
ZkSolc Version
v1.5.7
Optimization Enabled:
Yes with Mode 3
Other Settings:
cancun EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import {IGameItems, ID as GAME_ITEMS_CONTRACT_ID} from "../tokens/IGameItems.sol"; import {IGigaNoobNFT, ID as NOOB_NFT_CONTRACT_ID} from "../tokens/giganoobnft/IGigaNoobNFT.sol"; import {IGigaNameNFT, ID as NAME_NFT_CONTRACT_ID} from "../tokens/giganamenft/IGigaNameNFT.sol"; import {DataTable} from "../db/DataTable.sol"; import {IAccountSystem, ID as ID} from "./IAccountSystem.sol"; import "@openzeppelin/contracts/utils/introspection/IERC165.sol"; import {MANAGER_ROLE, GAME_LOGIC_CONTRACT_ROLE, DEPLOYER_ROLE} from "../constants/RoleConstants.sol"; import {ID_CID, ETH_MINT_PRICE_CID, GAME_ITEM_ID_CID, NOOB_TOKEN_CID, GIGA_NAME_TOKENDID_CID, ADDRESS_CID} from "../constants/ColumnConstants.sol"; contract AccountSystem is IAccountSystem, DataTable { constructor(address gameRegistryAddress) DataTable(gameRegistryAddress, ID) {} function initialize() external override onlyRole(DEPLOYER_ROLE) { initializeTable("AccountSystem", ID); } function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IAccountSystem).interfaceId || interfaceId == type(IERC165).interfaceId; } //////////////////// // Public Writes // ////////////////// function mintWithEth(string memory _username, bytes memory signature) override external payable whenNotPaused { uint256 _mintPrice = mintPrice(); require(_mintPrice > 0, "Mint price not set"); require(msg.value >= _mintPrice, "Insufficient payment"); _mint(msg.sender, _username, signature); // Return excess ETH if any uint256 excess = msg.value - _mintPrice; if (excess > 0) { (bool success, ) = payable(msg.sender).call{value: excess}(""); require(success, "Failed to return excess ETH"); } } function mintWithGameItem(string memory _username, bytes memory signature) override external whenNotPaused { uint256 redeemableTokenId = getTableUint256Value(GAME_ITEM_ID_CID); require(redeemableTokenId > 0, "No redeemable token set"); IGameItems(_gameRegistry.getSystem(GAME_ITEMS_CONTRACT_ID)).burn(msg.sender, redeemableTokenId, 1); _mint(msg.sender, _username, signature); } function changeUsername(uint256 tokenId) override external { _changeUsername(msg.sender, tokenId); } //////////////////// // Public Reads /// ////////////////// function getPlayerUsernameId(address player) override public view returns (uint256) { return getDocUint256Value(uint256(uint160(player)), GIGA_NAME_TOKENDID_CID); } function getPlayerNoobId(address player) override public view returns (uint256) { return getDocUint256Value(uint256(uint160(player)), NOOB_TOKEN_CID); } function mintPrice() override public view returns (uint256) { return getTableUint256Value(ETH_MINT_PRICE_CID); } function setMintPrice(uint256 newPrice) override external onlyRole(MANAGER_ROLE) { _setTableUint256Value(ETH_MINT_PRICE_CID, newPrice); } ////////////// // Manager // //////////// function setPrice(uint256 _price, uint256 _redeemableTokenId) override external onlyRole(MANAGER_ROLE) { _setTableUint256Value(ETH_MINT_PRICE_CID, _price); _setTableUint256Value(GAME_ITEM_ID_CID, _redeemableTokenId); } function withdraw() override external onlyRole(MANAGER_ROLE) { (bool success, ) = payable(msg.sender).call{value: address(this).balance}(""); require(success, "Transfer failed"); } ///////////////////// // Game Contracts // /////////////////// function setUsername(address to, uint256 tokenId) override external onlyRole(GAME_LOGIC_CONTRACT_ROLE) { _setUsernameTokenId(to, tokenId); } function setPlayerNoob(address to, uint256 tokenId) override external onlyRole(GAME_LOGIC_CONTRACT_ROLE) { _setPlayerNoob(to, tokenId); } function removeUsername(address player) override external onlyRole(GAME_LOGIC_CONTRACT_ROLE) { _setDocUint256Value(uint256(uint160(player)), GIGA_NAME_TOKENDID_CID, 0); } //////////////////////// // Internal Helpers /// ////////////////////// function _mint(address to, string memory _username, bytes memory signature) private { uint256 playerNoob = getPlayerNoobId(to); require (playerNoob == 0, "User already has a account"); uint256 noobTokenId = IGigaNoobNFT(_gameRegistry.getSystem(NOOB_NFT_CONTRACT_ID)).mint(to); uint256 usernameTokenId = IGigaNameNFT(_gameRegistry.getSystem(NAME_NFT_CONTRACT_ID)).mintUsernameByMinterContract(to, _username, signature); _setUsernameTokenId(to, usernameTokenId); _setPlayerNoob(to, noobTokenId); } function _setUsernameTokenId(address to, uint256 tokenId) private { _setDocUint256Value(uint256(uint160(to)), GIGA_NAME_TOKENDID_CID, tokenId); } function _setPlayerNoob(address to, uint256 tokenId) private { _setDocUint256Value(uint256(uint160(to)), NOOB_TOKEN_CID, tokenId); } function _changeUsername(address player, uint256 tokenId) private { IGigaNameNFT nameNft = IGigaNameNFT(_gameRegistry.getSystem(NAME_NFT_CONTRACT_ID)); require(nameNft.ownerOf(tokenId) == player, "Owner of the token can only change the username"); _setUsernameTokenId(player, tokenId); } }
// SPDX-License-Identifier: MIT LICENSE pragma solidity ^0.8.9; import {IERC1155} from "@openzeppelin/contracts/token/ERC1155/IERC1155.sol"; uint256 constant ID = uint256(keccak256("game.gigaverse.gameitems")); interface IGameItems is IERC1155 { /** * Mints a ERC1155 token * * @param to Recipient of the token * @param id Id of token to mint * @param amount Quantity of token to mint */ function mint(address to, uint256 id, uint256 amount) external; /** * Burn a token - any payment / game logic should be handled in the game contract. * * @param from Account to burn from * @param id Id of the token to burn * @param amount Quantity to burn */ function burn(address from, uint256 id, uint256 amount) external; /** * @param id Id of the type to get data for * * @return How many of the given token id have been minted */ function minted(uint256 id) external view returns (uint256); function burnBatch(address from, uint256[] memory ids, uint256[] memory amounts) external; }
// SPDX-License-Identifier: MIT LICENSE pragma solidity ^0.8.9; import {IGameNFT} from "../gamenft/IGameNFT.sol"; uint256 constant ID = uint256(keccak256("game.gigaverse.giganoobnft")); interface IGigaNoobNFT is IGameNFT { function mint(address to) external returns (uint256); function burnByGameContract(uint256 id) external; }
// SPDX-License-Identifier: MIT LICENSE pragma solidity ^0.8.9; import {IGameNFT} from "../gamenft/IGameNFT.sol"; uint256 constant ID = uint256(keccak256("game.gigaverse.giganamenft")); interface IGigaNameNFT is IGameNFT { function mintUsernameByMinterContract(address to, string memory username, bytes memory signature) external returns (uint256); function burnByGameContract(uint256 id) external; }
// SPDX-License-Identifier: MIT LICENSE pragma solidity ^0.8.9; import {DataStore, ID as DATA_STORE_ID} from "./DataStore.sol"; import {DEPLOYER_ROLE} from "../constants/RoleConstants.sol"; import {NAME_CID, ADDRESS_CID, ID_CID, NEXT_DOCID_CID, OWNER_CID} from "../constants/ColumnConstants.sol"; import {GameRegistryConsumer} from "../core/GameRegistryConsumer.sol"; contract DataTable is GameRegistryConsumer { error AlreadyInitialized(); bool private _initialized; constructor(address gameRegistryAddress, uint256 ID) GameRegistryConsumer(gameRegistryAddress, ID) {} function owner() public view virtual returns (address) { return getTableAddressValue(OWNER_CID); } function name() public view virtual returns (string memory) { return getTableStringValue(NAME_CID); } function initializeTable(string memory nameToSet, uint256 id) internal { if (_initialized) { revert AlreadyInitialized(); } _setTableAddressValue(ADDRESS_CID, address(this)); _setTableAddressValue(OWNER_CID, msg.sender); _setTableStringValue(NAME_CID, nameToSet); _setTableUint256Value(ID_CID, id); _initialized = true; } function getTableId() public virtual view returns (uint256) { return getId(); } function _getAndIncrementAutoIncId() internal returns (uint256) { uint256 currentId = getTableUint256Value(NEXT_DOCID_CID); _setTableUint256Value(NEXT_DOCID_CID, currentId + 1); return currentId + 1; } function _incrementAmount(uint256 docId, uint256 columnId, uint256 amount) internal { uint256 currentAmount = getDocUint256Value(docId, columnId); _setDocUint256Value(docId, columnId, currentAmount + amount); } function _decrementAmount(uint256 docId, uint256 columnId, uint256 amount) internal { uint256 currentAmount = getDocUint256Value(docId, columnId); _setDocUint256Value(docId, columnId, currentAmount - amount); } function _setTableStringValue(uint256 columnId, string memory value) internal { DataStore(_gameRegistry.getSystem(DATA_STORE_ID)).setString(getTableId(), 0, columnId, value); } function _setTableUint256Value(uint256 columnId, uint256 value) internal { DataStore(_gameRegistry.getSystem(DATA_STORE_ID)).setUint256(getTableId(), 0, columnId, value); } function _setTableAddressValue(uint256 columnId, address value) internal { DataStore(_gameRegistry.getSystem(DATA_STORE_ID)).setAddress(getTableId(), 0, columnId, value); } function _setTableBoolValue(uint256 columnId, bool value) internal { DataStore(_gameRegistry.getSystem(DATA_STORE_ID)).setBool(getTableId(), 0, columnId, value); } function _setTableAdddressValue(uint256 columnId, address value) internal { DataStore(_gameRegistry.getSystem(DATA_STORE_ID)).setAddress(getTableId(), 0, columnId, value); } function _setTableUint256ArrayValue(uint256 columnId, uint256[] memory value) internal { DataStore(_gameRegistry.getSystem(DATA_STORE_ID)).setUint256ArrayValue(getTableId(), 0, columnId, value); } function _setTableBoolArrayValue(uint256 columnId, bool[] memory value) internal { DataStore(_gameRegistry.getSystem(DATA_STORE_ID)).setBoolArrayValue(getTableId(), 0, columnId, value); } function _setTableAddressArrayValue(uint256 columnId, address[] memory value) internal { DataStore(_gameRegistry.getSystem(DATA_STORE_ID)).setAddressArrayValue(getTableId(), 0, columnId, value); } function _setDocAddressArrayValue(uint256 docId, uint256 columnId, address[] memory value) internal { DataStore(_gameRegistry.getSystem(DATA_STORE_ID)).setAddressArrayValue(getTableId(), docId, columnId, value); } function _setDocBoolArrayValue(uint256 docId, uint256 columnId, bool[] memory value) internal { DataStore(_gameRegistry.getSystem(DATA_STORE_ID)).setBoolArrayValue(getTableId(), docId, columnId, value); } function _setDocStringValue(uint256 docId, uint256 columnId, string memory value) internal { DataStore(_gameRegistry.getSystem(DATA_STORE_ID)).setString(getTableId(), docId, columnId, value); } function _setDocUint256Value(uint256 docId, uint256 columnId, uint256 value) internal { DataStore(_gameRegistry.getSystem(DATA_STORE_ID)).setUint256(getTableId(), docId, columnId, value); } function _setDocUint256ArrayValue(uint256 docId, uint256 columnId, uint256[] memory value) internal { DataStore(_gameRegistry.getSystem(DATA_STORE_ID)).setUint256ArrayValue(getTableId(), docId, columnId, value); } function _setDocBoolValue(uint256 docId, uint256 columnId, bool value) internal { DataStore(_gameRegistry.getSystem(DATA_STORE_ID)).setBool(getTableId(), docId, columnId, value); } function _setDocAddressValue(uint256 docId, uint256 columnId, address value) internal { DataStore(_gameRegistry.getSystem(DATA_STORE_ID)).setAddress(getTableId(), docId, columnId, value); } function getTableBoolValue(uint256 columnId) public view returns (bool) { return DataStore(_gameRegistry.getSystem(DATA_STORE_ID)).getBool(getTableId(), 0, columnId); } function getTableUint256Value(uint256 columnId) public view returns (uint256) { return DataStore(_gameRegistry.getSystem(DATA_STORE_ID)).getUint256(getTableId(), 0, columnId); } function getTableStringValue(uint256 columnId) public view returns (string memory) { return DataStore(_gameRegistry.getSystem(DATA_STORE_ID)).getString(getTableId(), 0, columnId); } function getTableAddressValue(uint256 columnId) public view returns (address) { return DataStore(_gameRegistry.getSystem(DATA_STORE_ID)).getAddress(getTableId(), 0, columnId); } function getTableUint256ArrayValue(uint256 columnId) public view returns (uint256[] memory) { return DataStore(_gameRegistry.getSystem(DATA_STORE_ID)).getUint256Array(getTableId(), 0, columnId); } function getDocUint256ArrayValue(uint256 docId, uint256 columnId) public view returns (uint256[] memory) { return DataStore(_gameRegistry.getSystem(DATA_STORE_ID)).getUint256Array(getTableId(), docId, columnId); } function getDocStringValue(uint256 docId, uint256 columnId) public view returns (string memory) { return DataStore(_gameRegistry.getSystem(DATA_STORE_ID)).getString(getTableId(), docId, columnId); } function getDocUint256Value(uint256 docId, uint256 columnId) public view returns (uint256) { return DataStore(_gameRegistry.getSystem(DATA_STORE_ID)).getUint256(getTableId(), docId, columnId); } function getDocBoolValue(uint256 docId, uint256 columnId) public view returns (bool) { return DataStore(_gameRegistry.getSystem(DATA_STORE_ID)).getBool(getTableId(), docId, columnId); } function getDocAddressValue(uint256 docId, uint256 columnId) public view returns (address) { return DataStore(_gameRegistry.getSystem(DATA_STORE_ID)).getAddress(getTableId(), docId, columnId); } function hasDocStringValue(uint256 docId, uint256 columnId) public view returns (bool) { return DataStore(_gameRegistry.getSystem(DATA_STORE_ID)).hasStringValue(getTableId(), docId, columnId); } function hasDocValue(uint256 docId, uint256 columnId) public view returns (bool) { return DataStore(_gameRegistry.getSystem(DATA_STORE_ID)).hasValue(getTableId(), docId, columnId); } function getPlayerDocId(address player) public pure returns (uint256) { return uint256(uint160(player)); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "@openzeppelin/contracts/utils/introspection/IERC165.sol"; uint256 constant ID = uint256(keccak256("game.gigaverse.system.account")); interface IAccountSystem is IERC165 { function setPrice(uint256 _price, uint256 _redeemableTokenId) external; function mintWithEth(string memory _username, bytes memory signature) external payable; function mintWithGameItem(string memory _username, bytes memory signature) external; function getPlayerUsernameId(address player) external view returns (uint256); function getPlayerNoobId(address player) external view returns (uint256); function mintPrice() external view returns (uint256); function setUsername(address to, uint256 tokenId) external; function setPlayerNoob(address to, uint256 tokenId) external; function removeUsername(address player) external; function changeUsername(uint256 tokenId) external; function setMintPrice(uint256 newPrice) external; function withdraw() external; }
// 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 LICENSE pragma solidity ^0.8.9; // Pauser Role - Can pause the game bytes32 constant PAUSER_ROLE = keccak256("PAUSER_ROLE"); // Minter Role - Can mint items, NFTs, and ERC20 currency bytes32 constant MINTER_ROLE = keccak256("MINTER_ROLE"); // Manager Role - Can manage the shop, loot tables, and other game data bytes32 constant MANAGER_ROLE = keccak256("MANAGER_ROLE"); // Depoloyer Role - Can Deploy new Systems bytes32 constant DEPLOYER_ROLE = keccak256("DEPLOYER_ROLE"); // Game Logic Contract - Contract that executes game logic and accesses other systems bytes32 constant GAME_LOGIC_CONTRACT_ROLE = keccak256("GAME_LOGIC_CONTRACT_ROLE"); // For functions callable from game server bytes32 constant SERVER_JUDGE_ROLE = keccak256("SERVER_JUDGE_ROLE");
// SPDX-License-Identifier: MIT LICENSE pragma solidity ^0.8.9; uint256 constant NAME_CID = uint256(keccak256("name")); uint256 constant DESCRIPTION_CID = uint256(keccak256("description")); uint256 constant LEVEL_CID = uint256(keccak256("level")); uint256 constant IS_NOOB_CID = uint256(keccak256("is_noob")); uint256 constant NOOB_TOKEN_CID = uint256(keccak256("noob_tokend_id")); uint256 constant GIGA_NAME_TOKENDID_CID = uint256(keccak256("giganame_tokend_id")); uint256 constant IS_GIGA_NAME_CID = uint256(keccak256("is_giga_name")); uint256 constant GAME_ITEM_ID_CID = uint256(keccak256("game_item_id")); uint256 constant UINT256_CID = uint256(keccak256("int256")); uint256 constant ETH_MINT_PRICE_CID = uint256(keccak256("eth_mint_price")); uint256 constant NEXT_DOCID_CID = uint256(keccak256("next_token_id")); uint256 constant ID_CID = uint256(keccak256("id")); uint256 constant BASE_NAME_CID = uint256(keccak256("base_name")); uint256 constant BASE_URI_CID = uint256(keccak256("base_uri")); uint256 constant LAST_TRANSFER_TIME_CID = uint256(keccak256("last_transfer_time")); uint256 constant OWNER_CID = uint256(keccak256("owner")); uint256 constant INITIALIZED_CID = uint256(keccak256("initialized")); uint256 constant MAX_SUPPLY_CID = uint256(keccak256("max_supply")); uint256 constant ADDRESS_CID = uint256(keccak256("address")); uint256 constant IS_SOULBOUND_CID = uint256(keccak256("soulbound")); uint256 constant TIME_BETWEEN_CID = uint256(keccak256("time_between")); uint256 constant TIMESTAMP_CID = uint256(keccak256("timestamp")); uint256 constant IMG_URL_CID = uint256(keccak256("img_url")); uint256 constant PLAYER_CID = uint256(keccak256("player")); uint256 constant MINT_COUNT_CID = uint256(keccak256("mint_count")); uint256 constant CONTRACT_URI_CID = uint256(keccak256("contract_uri")); uint256 constant IS_RECYCLABLE_CID = uint256(keccak256("is_recyclable")); uint256 constant BURN_COUNT_CID = uint256(keccak256("burn_count")); uint256 constant BALANCE_CID = uint256(keccak256("balance")); uint256 constant ICON_URL_CID = uint256(keccak256("icon_url")); uint256 constant DUNGEON_ID_CID = uint256(keccak256("dungeon_id")); uint256 constant ENERGY_CID = uint256(keccak256("energy")); uint256 constant IS_CANCELLED_CID = uint256(keccak256("is_cancelled")); uint256 constant SPRITE_SHEET_URL_CID = uint256(keccak256("sprite_sheet_url")); uint256 constant IMPORT_AMOUNT_CID = uint256(keccak256("import_amount")); uint256 constant EXPORT_AMOUNT_CID = uint256(keccak256("export_amount")); uint256 constant EXPORT_LICENSE_CID = uint256(keccak256("export_license")); uint256 constant UNLOCKED_CID = uint256(keccak256("unlocked"));
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.7.0) (token/ERC1155/IERC1155.sol) pragma solidity ^0.8.0; import "../../utils/introspection/IERC165.sol"; /** * @dev Required interface of an ERC1155 compliant contract, as defined in the * https://eips.ethereum.org/EIPS/eip-1155[EIP]. * * _Available since v3.1._ */ interface IERC1155 is IERC165 { /** * @dev Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`. */ event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value); /** * @dev Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all * transfers. */ event TransferBatch( address indexed operator, address indexed from, address indexed to, uint256[] ids, uint256[] values ); /** * @dev Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to * `approved`. */ event ApprovalForAll(address indexed account, address indexed operator, bool approved); /** * @dev Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI. * * If an {URI} event was emitted for `id`, the standard * https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value * returned by {IERC1155MetadataURI-uri}. */ event URI(string value, uint256 indexed id); /** * @dev Returns the amount of tokens of token type `id` owned by `account`. * * Requirements: * * - `account` cannot be the zero address. */ function balanceOf(address account, uint256 id) external view returns (uint256); /** * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}. * * Requirements: * * - `accounts` and `ids` must have the same length. */ function balanceOfBatch(address[] calldata accounts, uint256[] calldata ids) external view returns (uint256[] memory); /** * @dev Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`, * * Emits an {ApprovalForAll} event. * * Requirements: * * - `operator` cannot be the caller. */ function setApprovalForAll(address operator, bool approved) external; /** * @dev Returns true if `operator` is approved to transfer ``account``'s tokens. * * See {setApprovalForAll}. */ function isApprovedForAll(address account, address operator) external view returns (bool); /** * @dev Transfers `amount` tokens of token type `id` from `from` to `to`. * * Emits a {TransferSingle} event. * * Requirements: * * - `to` cannot be the zero address. * - If the caller is not `from`, it must have been approved to spend ``from``'s tokens via {setApprovalForAll}. * - `from` must have a balance of tokens of type `id` of at least `amount`. * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the * acceptance magic value. */ function safeTransferFrom( address from, address to, uint256 id, uint256 amount, bytes calldata data ) external; /** * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}. * * Emits a {TransferBatch} event. * * Requirements: * * - `ids` and `amounts` must have the same length. * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the * acceptance magic value. */ function safeBatchTransferFrom( address from, address to, uint256[] calldata ids, uint256[] calldata amounts, bytes calldata data ) external; }
// SPDX-License-Identifier: MIT LICENSE pragma solidity ^0.8.13; import {IERC721} from "@openzeppelin/contracts/token/ERC721/IERC721.sol"; /** * @title Interface for game NFTs that have stats and other properties */ interface IGameNFT is IERC721 { /** * @param account Account to check hold time of * @param tokenId Id of the token * @return The time in seconds a given account has held a token */ function getTimeHeld( address account, uint256 tokenId ) external view returns (uint32); function getLastTransfer( uint256 tokenId ) external view returns (uint32); /** * Mints a batch of ERC721 token * * @param to Recipient of the token * @param amount Quantity of token to mint */ function mintBatch(address to, uint256 amount) external returns (uint256[] memory); function exists(uint256 tokenId) external view returns (bool); function isTradingLocked() external view returns (bool); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "./DataTypes.sol"; import {IDataStore, ID} from "./IDataStore.sol"; import {GameRegistryConsumer} from "../core/GameRegistryConsumer.sol"; import {GAME_LOGIC_CONTRACT_ROLE} from "../constants/RoleConstants.sol"; contract DataStore is IDataStore, GameRegistryConsumer { using DataTypes for *; mapping(uint256 => mapping(uint256 => bytes32)) public datastore; mapping(uint256 => mapping(uint256 => bytes32[])) public arrayStore; mapping(uint256 => mapping(uint256 => string)) private stringStore; mapping(uint256 => bytes32) public columnTypes; constructor(address gameRegistryAddress) GameRegistryConsumer(gameRegistryAddress, ID) {} function generateKey(uint256 docId, uint256 colId) public pure returns (uint256) { return uint256(keccak256(abi.encodePacked(docId, colId))); } function generateArrayKey (uint256 docId, uint256 colId) public pure returns (uint256) { return uint256(keccak256(abi.encodePacked(docId, colId, "__array"))); } function setValue(uint256 tableId, uint256 docId, uint256 colId, bytes32 value) public onlyRole(GAME_LOGIC_CONTRACT_ROLE) { datastore[tableId][uint256(keccak256(abi.encodePacked(docId, colId)))] = value; emit ValueSet(tableId, docId, colId, value); } function setArrayValue(uint256 tableId, uint256 docId, uint256 colId, bytes32[] memory value) public onlyRole(GAME_LOGIC_CONTRACT_ROLE) { arrayStore[tableId][generateArrayKey(docId, colId)] = value; emit ArrayValueSet(tableId, docId, colId, value); } function setUint256ArrayValue(uint256 tableId, uint256 docId, uint256 colId, uint256[] memory value) public onlyRole(GAME_LOGIC_CONTRACT_ROLE) { require (getColumnType(colId) == IDataStore.ColumnType.UINT256, "Column is not UINT256ARRAY"); bytes32[] memory packedValues = new bytes32[](value.length); for (uint256 i = 0; i < value.length; i++) { packedValues[i] = value[i].packUint256(); } setArrayValue(tableId, docId, colId, packedValues); } function setBoolArrayValue(uint256 tableId, uint256 docId, uint256 colId, bool[] memory value) public onlyRole(GAME_LOGIC_CONTRACT_ROLE) { require (getColumnType(colId) == IDataStore.ColumnType.BOOL, "Column is not BOOLARRAY"); bytes32[] memory packedValues = new bytes32[](value.length); for (uint256 i = 0; i < value.length; i++) { packedValues[i] = value[i].packBool(); } setArrayValue(tableId, docId, colId, packedValues); } function setAddressArrayValue(uint256 tableId, uint256 docId, uint256 colId, address[] memory value) public onlyRole(GAME_LOGIC_CONTRACT_ROLE) { require (getColumnType(colId) == IDataStore.ColumnType.ADDRESS, "Column is not ADDRESSARRAY"); bytes32[] memory packedValues = new bytes32[](value.length); for (uint256 i = 0; i < value.length; i++) { packedValues[i] = value[i].packAddress(); } setArrayValue(tableId, docId, colId, packedValues); } function getUint256Array(uint256 tableId, uint256 docId, uint256 colId) public view returns (uint256[] memory) { require (getColumnType(colId) == IDataStore.ColumnType.UINT256, "Column is not UINT256"); bytes32[] memory byteArray = arrayStore[tableId][generateArrayKey(docId, colId)]; uint256[] memory uintArray = new uint256[](byteArray.length); for (uint256 i = 0; i < byteArray.length; i++) { uintArray[i] = byteArray[i].unpackUint256(); } return uintArray; } function getBoolArray(uint256 tableId, uint256 docId, uint256 colId) public view returns (bool[] memory) { require (getColumnType(colId) == IDataStore.ColumnType.BOOL, "Column is not BOOL"); bytes32[] memory byteArray = arrayStore[tableId][generateArrayKey(docId, colId)]; bool[] memory boolArray = new bool[](byteArray.length); for (uint256 i = 0; i < byteArray.length; i++) { boolArray[i] = byteArray[i].unpackBool(); } return boolArray; } function getAddressArray(uint256 tableId, uint256 docId, uint256 colId) public view returns (address[] memory) { require (getColumnType(colId) == IDataStore.ColumnType.ADDRESS, "Column is not ADDRESS"); bytes32[] memory byteArray = arrayStore[tableId][generateArrayKey(docId, colId)]; address[] memory addressArray = new address[](byteArray.length); for (uint256 i = 0; i < byteArray.length; i++) { addressArray[i] = byteArray[i].unpackAddress(); } return addressArray; } function getValue(uint256 tableId, uint256 docId, uint256 colId) public view returns (bytes32) { return datastore[tableId][uint256(keccak256(abi.encodePacked(docId, colId)))]; } function setColumnType(uint256 colId, IDataStore.ColumnType columnType) public onlyRole(GAME_LOGIC_CONTRACT_ROLE) { require(!isColumnTypeSet(colId), "Column type already set"); columnTypes[colId] = bytes32(uint256(columnType)); emit ColumnTypeSet(colId, columnType); } function isColumnTypeSet(uint256 colId) public view returns (bool) { return columnTypes[colId] != bytes32(0); } function getColumnType(uint256 colId) public view returns (IDataStore.ColumnType) { bytes32 typeValue = columnTypes[colId]; require(typeValue != bytes32(0), "Column type not set"); return IDataStore.ColumnType(uint8(uint256(typeValue))); } // Type-specific setters function setUint256(uint256 tableId, uint256 docId, uint256 colId, uint256 value) public onlyRole(GAME_LOGIC_CONTRACT_ROLE){ require(getColumnType(colId) == IDataStore.ColumnType.UINT256, "Column is not UINT256"); setValue(tableId, docId, colId, value.packUint256()); } function setInt256(uint256 tableId, uint256 docId, uint256 colId, int256 value) public onlyRole(GAME_LOGIC_CONTRACT_ROLE){ require(getColumnType(colId) == IDataStore.ColumnType.INT256, "Column is not INT256"); setValue(tableId, docId, colId, value.packInt256()); } function setBool(uint256 tableId, uint256 docId, uint256 colId, bool value) public onlyRole(GAME_LOGIC_CONTRACT_ROLE){ require(getColumnType(colId) == IDataStore.ColumnType.BOOL, "Column is not BOOL"); setValue(tableId, docId, colId, value.packBool()); } function setAddress(uint256 tableId, uint256 docId, uint256 colId, address value) public onlyRole(GAME_LOGIC_CONTRACT_ROLE){ require(getColumnType(colId) == IDataStore.ColumnType.ADDRESS, "Column is not ADDRESS"); setValue(tableId, docId, colId, value.packAddress()); } function setBytes32(uint256 tableId, uint256 docId, uint256 colId, bytes32 value) public onlyRole(GAME_LOGIC_CONTRACT_ROLE){ require(getColumnType(colId) == IDataStore.ColumnType.BYTES32, "Column is not BYTES32"); setValue(tableId, docId, colId, value); } function setString(uint256 tableId, uint256 docId, uint256 colId, string memory value) public onlyRole(GAME_LOGIC_CONTRACT_ROLE){ require(getColumnType(colId) == IDataStore.ColumnType.STRING, "Column is not STRING"); uint256 key = generateKey(docId, colId); stringStore[tableId][key] = value; emit StringValueSet(tableId, docId, colId, value); } function deleteValue(uint256 tableId, uint256 docId, uint256 colId) public onlyRole(GAME_LOGIC_CONTRACT_ROLE){ uint256 key = generateKey(docId, colId); delete datastore[tableId][key]; } // Type-specific getters function getUint256(uint256 tableId, uint256 docId, uint256 colId) public view returns (uint256) { require(getColumnType(colId) == IDataStore.ColumnType.UINT256, "Column is not UINT256"); return getValue(tableId, docId, colId).unpackUint256(); } function getInt256(uint256 tableId, uint256 docId, uint256 colId) public view returns (int256) { require(getColumnType(colId) == IDataStore.ColumnType.INT256, "Column is not INT256"); return getValue(tableId, docId, colId).unpackInt256(); } function getBool(uint256 tableId, uint256 docId, uint256 colId) public view returns (bool) { require(getColumnType(colId) == IDataStore.ColumnType.BOOL, "Column is not BOOL"); return getValue(tableId, docId, colId).unpackBool(); } function getAddress(uint256 tableId, uint256 docId, uint256 colId) public view returns (address) { require(getColumnType(colId) == IDataStore.ColumnType.ADDRESS, "Column is not ADDRESS"); return getValue(tableId, docId, colId).unpackAddress(); } function getBytes32(uint256 tableId, uint256 docId, uint256 colId) public view returns (bytes32) { require(getColumnType(colId) == IDataStore.ColumnType.BYTES32, "Column is not BYTES32"); return getValue(tableId, docId, colId); } function getString(uint256 tableId, uint256 docId, uint256 colId) public view returns (string memory) { require(getColumnType(colId) == IDataStore.ColumnType.STRING, "Column is not STRING"); uint256 key = generateKey(docId, colId); return stringStore[tableId][key]; } function hasValue(uint256 tableId, uint256 docId, uint256 colId) public view returns (bool) { uint256 key = generateKey(docId, colId); return datastore[tableId][key] != bytes32(0); } function hasStringValue(uint256 tableId, uint256 docId, uint256 colId) public view returns (bool) { uint256 key = generateKey(docId, colId); return keccak256(bytes(stringStore[tableId][key])) != keccak256(bytes("")); } }
// SPDX-License-Identifier: MIT LICENSE pragma solidity ^0.8.13; import {ReentrancyGuard} from "@openzeppelin/contracts/security/ReentrancyGuard.sol"; import {PAUSER_ROLE, MANAGER_ROLE} from "../constants/RoleConstants.sol"; import {ISystem} from "./ISystem.sol"; import {IGameRegistry, IERC165} from "./IGameRegistry.sol"; import {IDataStore, ID as DATA_STORE_ID} from "../db/IDataStore.sol"; import {DEPLOYER_ROLE} from "../constants/RoleConstants.sol"; /** @title Contract that lets a child contract access the GameRegistry contract */ abstract contract GameRegistryConsumer is ReentrancyGuard, ISystem { /// @notice Whether or not the contract is paused bool private _paused; /// @notice Reference to the game registry that this contract belongs to IGameRegistry internal _gameRegistry; /// @notice Id for the system/component uint256 private _id; /** EVENTS **/ /// @dev Emitted when the pause is triggered by `account`. event Paused(address account); /// @dev Emitted when the pause is lifted by `account`. event Unpaused(address account); /** ERRORS **/ /// @notice Not authorized to perform action error MissingRole(address account, bytes32 expectedRole); /** MODIFIERS **/ /// @notice Modifier to verify a user has the appropriate role to call a given function modifier onlyRole(bytes32 role) { _checkRole(role, msg.sender); _; } /** * @dev Modifier to make a function callable only when the contract is not paused. * * Requirements: * * - The contract must not be paused. */ modifier whenNotPaused() { _requireNotPaused(); _; } /** * @dev Modifier to make a function callable only when the contract is paused. * * Requirements: * * - The contract must be paused. */ modifier whenPaused() { _requirePaused(); _; } /** ERRORS **/ /// @notice Error if the game registry specified is invalid error InvalidGameRegistry(); /** SETUP **/ /** @return ID for this system */ function getId() public view override returns (uint256) { return _id; } /** * Pause/Unpause the contract * * @param shouldPause Whether or pause or unpause */ function setPaused(bool shouldPause) external onlyRole(PAUSER_ROLE) { if (shouldPause) { _pause(); } else { _unpause(); } } /** * @dev Returns true if the contract OR the GameRegistry is paused, and false otherwise. */ function paused() public view virtual returns (bool) { return _paused || _gameRegistry.paused(); } /** * Sets the GameRegistry contract address for this contract * * @param gameRegistryAddress Address for the GameRegistry contract */ function setGameRegistry( address gameRegistryAddress ) external onlyRole(MANAGER_ROLE) { _gameRegistry = IGameRegistry(gameRegistryAddress); if (gameRegistryAddress == address(0)) { revert InvalidGameRegistry(); } } /** @return GameRegistry contract for this contract */ function getGameRegistry() external view returns (IGameRegistry) { return _gameRegistry; } /** INTERNAL **/ /** * @dev Returns `true` if `account` has been granted `role`. */ function _hasAccessRole( bytes32 role, address account ) internal view returns (bool) { return _gameRegistry.hasAccessRole(role, account); } /** * @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 (!_gameRegistry.hasAccessRole(role, account)) { revert MissingRole(account, role); } } /** @return Returns the dataStore for this contract */ function _dataStore() internal view returns (IDataStore) { return IDataStore(_getSystem(DATA_STORE_ID)); } /** @return Address for a given system */ function _getSystem(uint256 systemId) internal view returns (address) { return _gameRegistry.getSystem(systemId); } /** PAUSABLE **/ /** * @dev Throws if the contract is paused. */ function _requireNotPaused() internal view virtual { require(!paused(), "Pausable: paused"); } /** * @dev Throws if the contract is not paused. */ function _requirePaused() internal view virtual { require(paused(), "Pausable: not paused"); } /** * @dev Triggers stopped state. * * Requirements: * * - The contract must not be paused. */ function _pause() internal virtual { require(_paused == false, "Pausable: not paused"); _paused = true; emit Paused(msg.sender); } /** * @dev Returns to normal state. * * Requirements: * * - The contract must be paused. */ function _unpause() internal virtual { require(_paused == true, "Pausable: not paused"); _paused = false; emit Unpaused(msg.sender); } function initialize() external virtual onlyRole(DEPLOYER_ROLE) { } /** * Constructor for this contract * * @param gameRegistryAddress Address of the GameRegistry contract * @param id Id of the system/component */ constructor( address gameRegistryAddress, uint256 id ) { _gameRegistry = IGameRegistry(gameRegistryAddress); if (gameRegistryAddress == address(0)) { revert InvalidGameRegistry(); } _paused = true; _id = id; } }
// 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 pragma solidity ^0.8.9; library DataTypes { // Pack and unpack uint256 function packUint256(uint256 value) internal pure returns (bytes32) { return bytes32(value); } function unpackUint256(bytes32 packed) internal pure returns (uint256) { return uint256(packed); } // Pack and unpack int256 function packInt256(int256 value) internal pure returns (bytes32) { return bytes32(uint256(value)); } function unpackInt256(bytes32 packed) internal pure returns (int256) { return int256(uint256(packed)); } // Pack and unpack address function packAddress(address value) internal pure returns (bytes32) { return bytes32(uint256(uint160(value))); } function unpackAddress(bytes32 packed) internal pure returns (address) { return address(uint160(uint256(packed))); } // Pack and unpack bool function packBool(bool value) internal pure returns (bytes32) { return bytes32(uint256(value ? 1 : 0)); } function unpackBool(bytes32 packed) internal pure returns (bool) { return uint256(packed) == 1; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; uint256 constant ID = uint256(keccak256("game.gigaverse.datastore")); interface IDataStore { enum ColumnType { NONE, UINT256, INT256, BOOL, ADDRESS, BYTES32, STRING, UINT256_ARRAY } event ValueSet(uint256 indexed tableId, uint256 indexed docId, uint256 indexed colId, bytes32 value); event StringValueSet(uint256 indexed tableId, uint256 indexed docId, uint256 indexed colId, string value); event ArrayValueSet(uint256 indexed tableId, uint256 indexed docId, uint256 indexed colId, bytes32[] value); event ColumnTypeSet(uint256 indexed colId, ColumnType columnType); function setValue(uint256 tableId, uint256 docId, uint256 colId, bytes32 value) external; function getValue(uint256 tableId, uint256 docId, uint256 colId) external view returns (bytes32); function setColumnType(uint256 colId, ColumnType columnType) external; function getColumnType(uint256 colId) external view returns (ColumnType); // Type-specific setters function setUint256(uint256 tableId, uint256 docId, uint256 colId, uint256 value) external; function setInt256(uint256 tableId, uint256 docId, uint256 colId, int256 value) external; function setBool(uint256 tableId, uint256 docId, uint256 colId, bool value) external; function setAddress(uint256 tableId, uint256 docId, uint256 colId, address value) external; function setBytes32(uint256 tableId, uint256 docId, uint256 colId, bytes32 value) external; function setString(uint256 tableId, uint256 docId, uint256 colId, string memory value) external; // Type-specific getters function getUint256(uint256 tableId, uint256 docId, uint256 colId) external view returns (uint256); function getInt256(uint256 tableId, uint256 docId, uint256 colId) external view returns (int256); function getBool(uint256 tableId, uint256 docId, uint256 colId) external view returns (bool); function getAddress(uint256 tableId, uint256 docId, uint256 colId) external view returns (address); function getBytes32(uint256 tableId, uint256 docId, uint256 colId) external view returns (bytes32); function getString(uint256 tableId, uint256 docId, uint256 colId) external view returns (string memory); function deleteValue(uint256 tableId, uint256 docId, uint256 colId) external; function hasValue(uint256 tableId, uint256 docId, uint256 colId) external view returns (bool); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.8.0) (security/ReentrancyGuard.sol) pragma solidity ^0.8.0; /** * @dev Contract module that helps prevent reentrant calls to a function. * * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier * available, which can be applied to functions to make sure there are no nested * (reentrant) calls to them. * * Note that because there is a single `nonReentrant` guard, functions marked as * `nonReentrant` may not call one another. This can be worked around by making * those functions `private`, and then adding `external` `nonReentrant` entry * points to them. * * TIP: If you would like to learn more about reentrancy and alternative ways * to protect against it, check out our blog post * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]. */ abstract contract ReentrancyGuard { // Booleans are more expensive than uint256 or any type that takes up a full // word because each write operation emits an extra SLOAD to first read the // slot's contents, replace the bits taken up by the boolean, and then write // back. This is the compiler's defense against contract upgrades and // pointer aliasing, and it cannot be disabled. // The values being non-zero value makes deployment a bit more expensive, // but in exchange the refund on every call to nonReentrant will be lower in // amount. Since refunds are capped to a percentage of the total // transaction's gas, it is best to keep them low in cases like this one, to // increase the likelihood of the full refund coming into effect. uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor() { _status = _NOT_ENTERED; } /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and making it call a * `private` function that does the actual work. */ modifier nonReentrant() { _nonReentrantBefore(); _; _nonReentrantAfter(); } function _nonReentrantBefore() private { // On the first call to nonReentrant, _status will be _NOT_ENTERED require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); // Any calls to nonReentrant after this point will fail _status = _ENTERED; } function _nonReentrantAfter() private { // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _status = _NOT_ENTERED; } }
// SPDX-License-Identifier: MIT LICENSE pragma solidity ^0.8.9; import "@openzeppelin/contracts/utils/introspection/IERC165.sol"; /** * Defines a system the game engine */ interface ISystem { /** @return The ID for the system. Ex: a uint256 casted keccak256 hash */ function getId() external view returns (uint256); function initialize() external; }
// SPDX-License-Identifier: MIT LICENSE pragma solidity ^0.8.9; import "@openzeppelin/contracts/utils/introspection/IERC165.sol"; // @title Interface the game's ACL / Management Layer interface IGameRegistry is IERC165 { /** * @dev Returns `true` if `account` has been granted `role`. * @param role The role to query * @param account The address to query */ function hasAccessRole( bytes32 role, address account ) external view returns (bool); /** * @return Whether or not the registry is paused */ function paused() external view returns (bool); /** * Registers a system by id * * @param systemId Id of the system * @param systemAddress Address of the system contract */ function registerSystem(uint256 systemId, address systemAddress, bool isGameLogicContract) external; /** * @param systemId Id of the system * @return System based on an id */ function getSystem(uint256 systemId) external view returns (address); }
{ "viaIR": false, "codegen": "yul", "remappings": [ "@limitbreak/creator-token-standards/=lib/creator-token-standards/", "@openzeppelin/=lib/openzeppelin-contracts/", "ds-test/=lib/forge-std/lib/ds-test/src/", "forge-std/=lib/forge-std/src/", "murky/=lib/murky/src/", "erc721a/=lib/ERC721A/", "@creator-token-standards/=lib/creator-token-standards/src/", "@limitbreak/permit-c/=lib/creator-token-standards/lib/PermitC/src/", "@opensea/tstorish/=lib/creator-token-standards/lib/tstorish/src/", "@rari-capital/solmate/=lib/creator-token-standards/lib/PermitC/lib/solmate/", "ERC721A/=lib/ERC721A/contracts/", "PermitC/=lib/creator-token-standards/lib/PermitC/", "creator-token-standards/=lib/creator-token-standards/", "erc4626-tests/=lib/murky/lib/openzeppelin-contracts/lib/erc4626-tests/", "forge-gas-metering/=lib/creator-token-standards/lib/PermitC/lib/forge-gas-metering/", "forge-zksync-std/=lib/forge-zksync-std/src/", "openzeppelin-contracts/=lib/openzeppelin-contracts/", "openzeppelin/=lib/creator-token-standards/lib/PermitC/lib/openzeppelin-contracts/contracts/", "solady/=lib/creator-token-standards/lib/PermitC/lib/forge-gas-metering/lib/solady/", "solmate/=lib/creator-token-standards/lib/PermitC/lib/solmate/src/", "tstorish/=lib/creator-token-standards/lib/tstorish/src/" ], "evmVersion": "cancun", "outputSelection": { "*": { "*": [ "abi", "metadata" ], "": [ "ast" ] } }, "optimizer": { "enabled": true, "mode": "3", "fallback_to_optimizing_for_size": false, "disable_system_request_memoization": true }, "metadata": {}, "libraries": {}, "enableEraVMExtensions": false, "forceEVMLA": false }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"gameRegistryAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AlreadyInitialized","type":"error"},{"inputs":[],"name":"InvalidGameRegistry","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"expectedRole","type":"bytes32"}],"name":"MissingRole","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"changeUsername","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"docId","type":"uint256"},{"internalType":"uint256","name":"columnId","type":"uint256"}],"name":"getDocAddressValue","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"docId","type":"uint256"},{"internalType":"uint256","name":"columnId","type":"uint256"}],"name":"getDocBoolValue","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"docId","type":"uint256"},{"internalType":"uint256","name":"columnId","type":"uint256"}],"name":"getDocStringValue","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"docId","type":"uint256"},{"internalType":"uint256","name":"columnId","type":"uint256"}],"name":"getDocUint256ArrayValue","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"docId","type":"uint256"},{"internalType":"uint256","name":"columnId","type":"uint256"}],"name":"getDocUint256Value","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getGameRegistry","outputs":[{"internalType":"contract IGameRegistry","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"player","type":"address"}],"name":"getPlayerDocId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"player","type":"address"}],"name":"getPlayerNoobId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"player","type":"address"}],"name":"getPlayerUsernameId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"columnId","type":"uint256"}],"name":"getTableAddressValue","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"columnId","type":"uint256"}],"name":"getTableBoolValue","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTableId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"columnId","type":"uint256"}],"name":"getTableStringValue","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"columnId","type":"uint256"}],"name":"getTableUint256ArrayValue","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"columnId","type":"uint256"}],"name":"getTableUint256Value","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"docId","type":"uint256"},{"internalType":"uint256","name":"columnId","type":"uint256"}],"name":"hasDocStringValue","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"docId","type":"uint256"},{"internalType":"uint256","name":"columnId","type":"uint256"}],"name":"hasDocValue","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"mintPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_username","type":"string"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"mintWithEth","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"string","name":"_username","type":"string"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"mintWithGameItem","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"player","type":"address"}],"name":"removeUsername","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"gameRegistryAddress","type":"address"}],"name":"setGameRegistry","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newPrice","type":"uint256"}],"name":"setMintPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"shouldPause","type":"bool"}],"name":"setPaused","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"setPlayerNoob","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_price","type":"uint256"},{"internalType":"uint256","name":"_redeemableTokenId","type":"uint256"}],"name":"setPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"setUsername","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":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
9c4d535b0000000000000000000000000000000000000000000000000000000000000000010008b10021063c512e6571e7d4707c1378ab15928f8f8be2e4dfcf1a931f4a0000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002000000000000000000000000074eb92b33f2400eb14f6d6725b14f76078d5e731
Deployed Bytecode
0x00030000000000020006000000000002000000000301034f00000060011002700000082a04100197000200000043035500010000000303550000000100200190000000310000c13d0000008001000039000000400010043f000000040040008c000000540000413d000000000143034f000000000203043b000000e002200270000008320020009c000000560000a13d000008330020009c0000007a0000213d000008400020009c000000d30000a13d000008410020009c0000017b0000a13d000008420020009c000003c40000613d000008430020009c000002080000613d000008440020009c000000540000c13d0000000001000416000000000001004b000000540000c13d0000000101000039000000000201041a0000086701000041000000800010043f0000086801000041000000840010043f000000000100041400000008022002700000082d02200197000000040020008c0000077c0000c13d0000000003000031000000200030008c00000020040000390000000004034019000007a10000013d0000000001000416000000000001004b000000540000c13d0000001f014000390000082b011001970000008001100039000000400010043f0000001f0240018f0000082c054001980000008001500039000000420000613d0000008006000039000000000703034f000000007807043c0000000006860436000000000016004b0000003e0000c13d000000000002004b0000004f0000613d000000000353034f0000000302200210000000000501043300000000052501cf000000000525022f000000000303043b0000010002200089000000000323022f00000000022301cf000000000252019f0000000000210435000000200040008c000000540000413d000000800100043d0000082d0010009c000000a30000a13d0000000001000019000020a7000104300000084c0020009c000000ab0000a13d0000084d0020009c000001090000a13d0000084e0020009c000001b60000a13d0000084f0020009c000004560000613d000008500020009c000003570000613d000008510020009c000000540000c13d000000240040008c000000540000413d0000000001000416000000000001004b000000540000c13d0000000401300370000000000101043b000600000001001d0000000101000039000000000201041a0000086701000041000000800010043f0000089401000041000000840010043f000000000100041400000008022002700000082d02200197000000040020008c00000a0c0000c13d0000000003000031000000200030008c0000002004000039000000000403401900000a310000013d000008340020009c000000ee0000a13d000008350020009c000001940000a13d000008360020009c0000044c0000613d000008370020009c0000034a0000613d000008380020009c000000540000c13d000000440040008c000000540000413d0000000001000416000000000001004b000000540000c13d0000002401300370000000000101043b000400000001001d0000000401300370000000000101043b000600000001001d0000000101000039000000000201041a0000086401000041000000800010043f0000086501000041000000840010043f00000000010004110000082d01100197000500000001001d000000a40010043f000000000100041400000008022002700000082d02200197000000040020008c0000091f0000c13d0000000003000031000000200030008c00000020040000390000000004034019000009440000013d0000000102000039000000000020041b000000000001004b000000c40000c13d0000087401000041000000000010043f0000087501000041000020a700010430000008590020009c000001270000213d0000085f0020009c000001d80000213d000008620020009c0000036a0000613d000008630020009c000000540000c13d000000240040008c000000540000413d0000000001000416000000000001004b000000540000c13d0000000401300370000000000101043b000008a500100198000000540000c13d000008a60010009c00000000020000390000000102006039000008a70010009c00000001022061bf000000800020043f0000087201000041000020a60001042e000000000302041a0000082e0330019700000008011002100000082f01100197000000000131019f00000001011001bf000000000012041b00000830010000410000000202000039000000000012041b0000002001000039000001000010044300000120000004430000083101000041000020a60001042e000008470020009c000001370000213d0000084a0020009c000002100000613d0000084b0020009c000000540000c13d000000240040008c000000540000413d0000000002000416000000000002004b000000540000c13d0000000102000039000000000202041a0000086703000041000000800030043f0000086803000041000000840030043f000000000300041400000008022002700000082d02200197000000040020008c000005e50000c13d0000000003000031000000200030008c000000200400003900000000040340190000060a0000013d0000083b0020009c000001500000213d0000083e0020009c000002230000613d0000083f0020009c000000540000c13d000000240040008c000000540000413d0000000001000416000000000001004b000000540000c13d0000000101000039000000000201041a0000086701000041000000800010043f0000086801000041000000840010043f000000000100041400000008022002700000082d02200197000000040020008c000006870000c13d0000000003000031000000200030008c00000020040000390000000004034019000006ac0000013d000008540020009c0000016f0000213d000008570020009c000002730000613d000008580020009c000000540000c13d0000000001000416000000000001004b000000540000c13d0000000103000039000000000203041a0000086401000041000000800010043f0000086501000041000000840010043f00000000010004110000082d04100197000000a40040043f000000000100041400000008022002700000082d02200197000000040020008c000500000003001d000600000004001d0000049d0000c13d0000000003000031000000200030008c00000020040000390000000004034019000004c20000013d0000085a0020009c000001ef0000213d0000085d0020009c000003850000613d0000085e0020009c000000540000c13d000000240040008c000000540000413d0000000001000416000000000001004b000000540000c13d0000000401300370000000000101043b0000082d0010009c000000540000213d000004530000013d000008480020009c0000023e0000613d000008490020009c000000540000c13d0000000001000416000000000001004b000000540000c13d0000000101000039000000000201041a0000086401000041000000800010043f0000088b01000041000000840010043f0000000001000411000000a40010043f000000000100041400000008022002700000082d02200197000000040020008c000004610000c13d0000000003000031000000200030008c00000020040000390000000004034019000004860000013d0000083c0020009c000002580000613d0000083d0020009c000000540000c13d000000440040008c000000540000413d0000000001000416000000000001004b000000540000c13d0000002401300370000000000401043b0000000401300370000000000301043b0000000101000039000000000201041a0000086701000041000000800010043f0000086801000041000000840010043f000000000100041400000008022002700000082d02200197000000040020008c000600000003001d000500000004001d000006cb0000c13d0000000003000031000000200030008c00000020040000390000000004034019000006f00000013d000008550020009c0000028e0000613d000008560020009c000000540000c13d0000000001000416000000000001004b000000540000c13d20a518350000040f000000000001004b0000000001000039000000010100c0390000045a0000013d000008450020009c000003140000613d000008460020009c000000540000c13d000000240040008c000000540000413d0000000001000416000000000001004b000000540000c13d0000000101000039000000000201041a0000086701000041000000800010043f0000086801000041000000840010043f000000000100041400000008022002700000082d02200197000000040020008c000008d80000c13d0000000003000031000000200030008c00000020040000390000000004034019000008fd0000013d000008390020009c0000032f0000613d0000083a0020009c000000540000c13d000000240040008c000000540000413d0000000001000416000000000001004b000000540000c13d0000000401300370000000000101043b000600000001001d0000082d0010009c000000540000213d0000000101000039000000000201041a0000086401000041000000800010043f0000086501000041000000840010043f00000000010004110000082d03100197000000a40030043f000000000100041400000008022002700000082d02200197000000040020008c000500000003001d00000c540000c13d0000000003000031000000200030008c0000002004000039000000000403401900000c790000013d000008520020009c000002080000613d000008530020009c000000540000c13d000000240040008c000000540000413d0000000001000416000000000001004b000000540000c13d0000000401300370000000000101043b000600000001001d0000082d0010009c000000540000213d0000000101000039000000000201041a0000086401000041000000800010043f0000089801000041000000840010043f00000000010004110000082d01100197000500000001001d000000a40010043f000000000100041400000008022002700000082d02200197000000040020008c00000ca70000c13d0000000003000031000000200030008c0000002004000039000000000403401900000ccc0000013d000008600020009c0000039a0000613d000008610020009c000000540000c13d0000000002000416000000000002004b000000540000c13d0000000102000039000000000202041a0000086703000041000000800030043f0000086803000041000000840030043f000000000300041400000008022002700000082d02200197000000040020008c000009660000c13d0000000003000031000000200030008c000000200400003900000000040340190000098b0000013d0000085b0020009c000003a50000613d0000085c0020009c000000540000c13d000000240040008c000000540000413d0000000002000416000000000002004b000000540000c13d0000000102000039000000000202041a0000086703000041000000800030043f0000086803000041000000840030043f000000000300041400000008022002700000082d02200197000000040020008c00000ade0000c13d0000000003000031000000200030008c0000002004000039000000000403401900000b030000013d0000000001000416000000000001004b000000540000c13d0000000201000039000000000101041a000000800010043f0000087201000041000020a60001042e000000440040008c000000540000413d0000000001000416000000000001004b000000540000c13d0000000401300370000000000101043b000600000001001d0000082d0010009c000000540000213d000000000100041120a51a0d0000040f00000024010000390000000101100367000000000201043b000000060100002920a51f1a0000040f0000000001000019000020a60001042e000000440040008c000000540000413d0000000001000416000000000001004b000000540000c13d0000002401300370000000000101043b000500000001001d0000000401300370000000000101043b000600000001001d0000000101000039000000000201041a0000086701000041000000800010043f0000086801000041000000840010043f000000000100041400000008022002700000082d02200197000000040020008c000004d40000c13d0000000003000031000000200030008c00000020040000390000000004034019000004f90000013d000000240040008c000000540000413d0000000001000416000000000001004b000000540000c13d0000000401300370000000000101043b000600000001001d0000082d0010009c000000540000213d0000000101000039000000000201041a0000086701000041000000800010043f0000086801000041000000840010043f000000000100041400000008022002700000082d02200197000000040020008c00000ba10000c13d0000000003000031000000200030008c0000002004000039000000000403401900000bc60000013d000000440040008c000000540000413d0000000002000416000000000002004b000000540000c13d0000002402300370000000000202043b000500000002001d0000000402300370000000000202043b000600000002001d0000000102000039000000000202041a0000086703000041000000800030043f0000086803000041000000840030043f000000000300041400000008022002700000082d02200197000000040020008c000005470000c13d0000000003000031000000200030008c000000200400003900000000040340190000056c0000013d000000440040008c000000540000413d0000000001000416000000000001004b000000540000c13d0000002401300370000000000101043b000500000001001d0000000401300370000000000101043b000600000001001d0000000101000039000000000201041a0000086701000041000000800010043f0000086801000041000000840010043f000000000100041400000008022002700000082d02200197000000040020008c000007390000c13d0000000003000031000000200030008c000000200400003900000000040340190000075e0000013d000000440040008c000000540000413d0000000401300370000000000201043b0000086a0020009c000000540000213d0000002301200039000000000041004b000000540000813d0000000405200039000000000153034f000000000101043b0000086a0010009c000011e50000213d0000001f06100039000008a8066001970000003f06600039000008a806600197000008830060009c000011e50000213d00000024022000390000008006600039000000400060043f000000800010043f0000000002210019000000000042004b000000540000213d0000002002500039000000000523034f000008a8061001980000001f0710018f000000a002600039000002b50000613d000000a008000039000000000905034f000000009a09043c0000000008a80436000000000028004b000002b10000c13d000000000007004b000002c20000613d000000000565034f0000000306700210000000000702043300000000076701cf000000000767022f000000000505043b0000010006600089000000000565022f00000000056501cf000000000575019f0000000000520435000000a00110003900000000000104350000002401300370000000000201043b0000086a0020009c000000540000213d0000002301200039000000000041004b000000540000813d0000000405200039000000000153034f000000000101043b0000086a0010009c000011e50000213d0000001f06100039000008a8066001970000003f06600039000008a806600197000000400700043d0000000006670019000600000007001d000000000076004b000000000700003900000001070040390000086a0060009c000011e50000213d0000000100700190000011e50000c13d0000002407200039000000400060043f000000060200002900000000021204360000000006710019000000000046004b000000540000213d0000002004500039000000000443034f000008a8051001980000001f0610018f0000000003520019000002f10000613d000000000704034f0000000008020019000000007907043c0000000008980436000000000038004b000002ed0000c13d000000000006004b000002fe0000613d000000000454034f0000000305600210000000000603043300000000065601cf000000000656022f000000000404043b0000010005500089000000000454022f00000000045401cf000000000464019f000000000043043500000000011200190000000000010435000000400100043d000500000001001d0000000101000039000400000001001d000000000201041a000000ff00200190000012410000c13d000008840100004100000005030000290000000000130435000000000100041400000008022002700000082d02200197000000040020008c000012480000c13d0000000003000031000000200030008c00000020040000390000000004034019000012720000013d000000440040008c000000540000413d0000000001000416000000000001004b000000540000c13d0000002401300370000000000101043b000500000001001d0000000401300370000000000101043b000600000001001d0000000101000039000000000201041a0000086701000041000000800010043f0000086801000041000000840010043f000000000100041400000008022002700000082d02200197000000040020008c000007ee0000c13d0000000003000031000000200030008c00000020040000390000000004034019000008130000013d000000440040008c000000540000413d0000000002000416000000000002004b000000540000c13d0000002402300370000000000202043b000500000002001d0000000402300370000000000202043b000600000002001d0000000102000039000000000202041a0000086703000041000000800030043f0000086803000041000000840030043f000000000300041400000008022002700000082d02200197000000040020008c000008310000c13d0000000003000031000000200030008c00000020040000390000000004034019000008560000013d000000240040008c000000540000413d0000000001000416000000000001004b000000540000c13d000000000100041120a519860000040f00000004010000390000000101100367000000000101043b20a51fdb0000040f0000000001000019000020a60001042e000000440040008c000000540000413d0000000001000416000000000001004b000000540000c13d0000000401300370000000000101043b000600000001001d0000082d0010009c000000540000213d000000000100041120a51a0d0000040f00000024010000390000000101100367000000000201043b000000060100002920a51e590000040f0000000001000019000020a60001042e000000440040008c000000540000413d0000000001000416000000000001004b000000540000c13d0000002401300370000000000101043b000500000001001d0000000401300370000000000101043b000600000001001d0000000101000039000000000201041a0000086701000041000000800010043f0000086801000041000000840010043f000000000100041400000008022002700000082d02200197000000040020008c00000a510000c13d0000000003000031000000200030008c0000002004000039000000000403401900000a760000013d000000240040008c000000540000413d0000000001000416000000000001004b000000540000c13d0000000101000039000000000201041a0000086701000041000000800010043f0000086801000041000000840010043f000000000100041400000008022002700000082d02200197000000040020008c00000a9a0000c13d0000000003000031000000200030008c0000002004000039000000000403401900000abf0000013d000000240040008c000000540000413d0000000001000416000000000001004b000000540000c13d0000000401300370000000000101043b0000082d0010009c000000540000213d20a518ad0000040f0000045a0000013d000000240040008c000000540000413d0000000001000416000000000001004b000000540000c13d0000000401300370000000000201043b000000000002004b0000000001000039000000010100c039000600000002001d000000000012004b000000540000c13d0000000101000039000000000201041a0000086401000041000000800010043f0000089f01000041000000840010043f0000000001000411000000a40010043f000000000100041400000008022002700000082d02200197000000040020008c00000cfb0000c13d0000000003000031000000200030008c0000002004000039000000000403401900000d200000013d000000440040008c000000540000413d0000000001000416000000000001004b000000540000c13d0000000401300370000000000501043b0000086a0050009c000000540000213d0000002301500039000000000041004b000000540000813d0000000406500039000000000163034f000000000201043b0000086a0020009c000011e50000213d0000001f07200039000008a8077001970000003f07700039000008a807700197000008830070009c000011e50000213d00000024055000390000008007700039000000400070043f000000800020043f0000000005520019000000000045004b000000540000213d0000002005600039000000000653034f000008a8072001980000001f0820018f000000a005700039000003ee0000613d000000a009000039000000000a06034f00000000ab0a043c0000000009b90436000000000059004b000003ea0000c13d000000000008004b000003fb0000613d000000000676034f0000000307800210000000000805043300000000087801cf000000000878022f000000000606043b0000010007700089000000000676022f00000000067601cf000000000686019f0000000000650435000000a00220003900000000000204350000002402300370000000000502043b0000086a0050009c000000540000213d0000002302500039000000000042004b000000540000813d0000000406500039000000000263034f000000000202043b0000086a0020009c000011e50000213d0000001f07200039000008a8077001970000003f07700039000008a807700197000000400800043d0000000007780019000600000008001d000000000087004b000000000800003900000001080040390000086a0070009c000011e50000213d0000000100800190000011e50000c13d0000002408500039000000400070043f000000060500002900000000052504360000000007820019000000000047004b000000540000213d0000002004600039000000000343034f000008a8042001980000001f0620018f00000000014500190000042a0000613d000000000703034f0000000008050019000000007907043c0000000008980436000000000018004b000004260000c13d000000000006004b000004370000613d000000000343034f0000000304600210000000000601043300000000064601cf000000000646022f000000000303043b0000010004400089000000000343022f00000000034301cf000000000363019f000000000031043500000000012500190000000000010435000000400100043d000500000001001d0000000101000039000000000201041a000000ff00200190000013ef0000c13d000008840100004100000005030000290000000000130435000000000100041400000008022002700000082d02200197000000040020008c000012930000c13d0000000003000031000000200030008c00000020040000390000000004034019000012bd0000013d0000000001000416000000000001004b000000540000c13d0000000101000039000000000101041a00000008011002700000082d01100197000000800010043f0000087201000041000020a60001042e0000000001000416000000000001004b000000540000c13d20a5175e0000040f000000400200043d00000000001204350000082a0020009c0000082a0200804100000040012002100000087c011001c7000020a60001042e0000082a0010009c0000082a01008041000000c00110021000000866011001c720a520a00000040f00000060031002700000082a03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000080057001bf000004750000613d0000008008000039000000000901034f000000009a09043c0000000008a80436000000000058004b000004710000c13d000000000006004b000004820000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f0002000000010355000000010020019000000b890000613d0000001f01400039000000600110018f00000080021001bf000600000002001d000000400020043f000000200030008c000000540000413d000000800200043d000000000002004b0000000004000039000000010400c039000000000042004b000000540000c13d000000000002004b00000d8a0000c13d0000087001000041000000000010043f0000000001000411000000040010043f0000088b01000041000000240010043f0000087101000041000020a7000104300000082a0010009c0000082a01008041000000c00110021000000866011001c720a520a00000040f00000060031002700000082a03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000080057001bf000004b10000613d0000008008000039000000000901034f000000009a09043c0000000008a80436000000000058004b000004ad0000c13d000000000006004b000004be0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f0002000000010355000000010020019000000b950000613d0000001f01400039000000600110018f00000080011001bf000000400010043f000000200030008c000000540000413d000000800100043d000000000001004b0000000002000039000000010200c039000000000021004b000000540000c13d000000000001004b00000e2e0000c13d0000087001000041000000000010043f000000060100002900000c8a0000013d0000082a0010009c0000082a01008041000000c00110021000000876011001c720a520a00000040f00000060031002700000082a03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000080057001bf000004e80000613d0000008008000039000000000901034f000000009a09043c0000000008a80436000000000058004b000004e40000c13d000000000006004b000004f50000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f0002000000010355000000010020019000000be80000613d0000001f01400039000000600110018f00000080021001bf000400000002001d000000400020043f000000200030008c000000540000413d000000800200043d0000082d0020009c000000540000213d0000000203000039000000000303041a00000880040000410000000405000029000000000045043500000084041001bf0000000000340435000000c40310003900000005040000290000000000430435000000a403100039000000060400002900000000004304350000000003000414000000040020008c00000a900000613d0000082a0030009c0000082a03008041000000c0013002100000004003500210000000000131019f00000878011001c720a520a00000040f000000040b00002900000060031002700000082a03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b00190000052a0000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b000005260000c13d000000000006004b000005370000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f00020000000103550000000100200190000007320000c13d0000001f0530018f0000082c06300198000000400200043d00000000046200190000122e0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000005420000c13d0000122e0000013d0000082a0030009c0000082a03008041000000c00130021000000876011001c720a520a00000040f00000060031002700000082a03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000080057001bf0000055b0000613d0000008008000039000000000901034f000000009a09043c0000000008a80436000000000058004b000005570000c13d000000000006004b000005680000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f0002000000010355000000010020019000000bf40000613d0000001f02400039000000600420018f00000080024001bf000400000002001d000000400020043f000000200030008c000000540000413d000000800200043d0000082d0020009c000000540000213d0000000205000039000000000505041a0000087d06000041000000040a00002900000000006a043500000084064001bf0000000000560435000000c40540003900000005060000290000000000650435000000a404400039000000060500002900000000005404350000000004000414000000040020008c000005940000613d0000004001a002100000082a0040009c0000082a04008041000000c003400210000000000113019f00000878011001c720a520a00000040f00000060031002700000082a0030019d0000082a033001970002000000010355000000010020019000000f8f0000613d000000040a000029000008a8053001980000001f0630018f00000000045a00190000059e0000613d000000000701034f00000000080a0019000000007907043c0000000008980436000000000048004b0000059a0000c13d000000000006004b000005ab0000613d000000000151034f0000000305600210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f00000000001404350000001f01300039000008a8011001970000000002a10019000000000012004b000000000100003900000001010040390000086a0020009c000011e50000213d0000000100100190000011e50000c13d000000400020043f000008790030009c000000540000213d000000200030008c000000540000413d000000040100002900000000010104330000086a0010009c000000540000213d000000040330002900000004011000290000001f04100039000000000034004b00000000050000190000087a050080410000087a044001970000087a06300197000000000764013f000000000064004b00000000040000190000087a040040410000087a0070009c000000000405c019000000000004004b000000540000c13d00000000150104340000086a0050009c000011e50000213d00000005045002100000003f064000390000087e0660019700000000062600190000086a0060009c000011e50000213d000000400060043f00000000005204350000000004140019000000000034004b000000540000213d000000000005004b000006830000613d0000000003020019000000200330003900000000150104340000000000530435000000000041004b000005df0000413d000006830000013d0000082a0030009c0000082a03008041000000c00130021000000876011001c720a520a00000040f00000060031002700000082a03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000080057001bf000005f90000613d0000008008000039000000000901034f000000009a09043c0000000008a80436000000000058004b000005f50000c13d000000000006004b000006060000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f0002000000010355000000010020019000000c000000613d0000001f02400039000000600420018f00000080024001bf000600000002001d000000400020043f000000200030008c000000540000413d000000800200043d0000082d0020009c000000540000213d0000000205000039000000000505041a0000087d06000041000000060a00002900000000006a043500000084064001bf0000000000560435000000a405400039000000000005043500000004050000390000000105500367000000000505043b000000c40440003900000000005404350000000004000414000000040020008c000006330000613d0000004001a002100000082a0040009c0000082a04008041000000c003400210000000000113019f00000878011001c720a520a00000040f00000060031002700000082a0030019d0000082a033001970002000000010355000000010020019000000f9b0000613d000000060a000029000008a8053001980000001f0630018f00000000045a00190000063d0000613d000000000701034f00000000080a0019000000007907043c0000000008980436000000000048004b000006390000c13d000000000006004b0000064a0000613d000000000151034f0000000305600210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f00000000001404350000001f01300039000008a8011001970000000002a10019000000000012004b000000000100003900000001010040390000086a0020009c000011e50000213d0000000100100190000011e50000c13d000000400020043f000008790030009c000000540000213d000000200030008c000000540000413d000000060100002900000000010104330000086a0010009c000000540000213d000000060330002900000006011000290000001f04100039000000000034004b00000000050000190000087a050080410000087a044001970000087a06300197000000000764013f000000000064004b00000000040000190000087a040040410000087a0070009c000000000405c019000000000004004b000000540000c13d00000000150104340000086a0050009c000011e50000213d00000005045002100000003f064000390000087e0660019700000000062600190000086a0060009c000011e50000213d000000400060043f00000000005204350000000004140019000000000034004b000000540000213d000000000005004b000006830000613d0000000003020019000000200330003900000000150104340000000000530435000000000041004b0000067e0000413d000000400100043d000600000001001d20a5174f0000040f000013220000013d0000082a0010009c0000082a01008041000000c00110021000000876011001c720a520a00000040f00000060031002700000082a03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000080057001bf0000069b0000613d0000008008000039000000000901034f000000009a09043c0000000008a80436000000000058004b000006970000c13d000000000006004b000006a80000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f0002000000010355000000010020019000000c0c0000613d0000001f01400039000000600110018f00000080021001bf000600000002001d000000400020043f000000200030008c000000540000413d000000800200043d0000082d0020009c000000540000213d0000000203000039000000000303041a0000087f040000410000000605000029000000000045043500000084041001bf0000000000340435000000a403100039000000000003043500000004030000390000000103300367000000000303043b000000c40410003900000000003404350000000003000414000000040020008c00000e420000c13d0000000001150019000000400010043f000000060200002900000a930000013d0000082a0010009c0000082a01008041000000c00110021000000876011001c720a520a00000040f00000060031002700000082a03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000080057001bf000006df0000613d0000008008000039000000000901034f000000009a09043c0000000008a80436000000000058004b000006db0000c13d000000000006004b000006ec0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f0002000000010355000000010020019000000c180000613d0000001f01400039000000600110018f00000080021001bf000400000002001d000000400020043f000000200030008c000000540000413d000000800200043d0000082d0020009c000000540000213d0000000203000039000000000303041a0000087b040000410000000405000029000000000045043500000084041001bf0000000000340435000000c40310003900000005040000290000000000430435000000a403100039000000060400002900000000004304350000000003000414000000040020008c00000a900000613d0000082a0030009c0000082a03008041000000c0013002100000004003500210000000000131019f00000878011001c720a520a00000040f000000040b00002900000060031002700000082a03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b0019000007210000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b0000071d0000c13d000000000006004b0000072e0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f0002000000010355000000010020019000000fa70000613d0000001f01400039000000600110018f0000000001b10019000000400010043f000000200030008c00000a920000813d000000540000013d0000082a0010009c0000082a01008041000000c00110021000000876011001c720a520a00000040f00000060031002700000082a03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000080057001bf0000074d0000613d0000008008000039000000000901034f000000009a09043c0000000008a80436000000000058004b000007490000c13d000000000006004b0000075a0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f0002000000010355000000010020019000000c240000613d0000001f01400039000000600110018f00000080021001bf000400000002001d000000400020043f000000200030008c000000540000413d000000800200043d0000082d0020009c000000540000213d0000000203000039000000000303041a00000881040000410000000405000029000000000045043500000084041001bf0000000000340435000000c40310003900000005040000290000000000430435000000a403100039000000060400002900000000004304350000000003000414000000040020008c00000e710000c13d0000000001150019000000400010043f00000004020000290000091b0000013d0000082a0010009c0000082a01008041000000c00110021000000876011001c720a520a00000040f00000060031002700000082a03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000080057001bf000007900000613d0000008008000039000000000901034f000000009a09043c0000000008a80436000000000058004b0000078c0000c13d000000000006004b0000079d0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f0002000000010355000000010020019000000c300000613d0000001f01400039000000600110018f00000080021001bf000600000002001d000000400020043f000000200030008c000000540000413d000000800200043d0000082d0020009c000000540000213d0000000203000039000000000303041a00000881040000410000000605000029000000000045043500000084041001bf0000000000340435000000c40310003900000882040000410000000000430435000000a40310003900000000000304350000000003000414000000040020008c000009180000613d0000082a0030009c0000082a03008041000000c0013002100000004003500210000000000131019f00000878011001c720a520a00000040f000000060b00002900000060031002700000082a03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b0019000007d10000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b000007cd0000c13d000000000006004b000007de0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f0002000000010355000000010020019000000ef70000c13d0000001f0530018f0000082c06300198000000400200043d00000000046200190000122e0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000007e90000c13d0000122e0000013d0000082a0010009c0000082a01008041000000c00110021000000876011001c720a520a00000040f00000060031002700000082a03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000080057001bf000008020000613d0000008008000039000000000901034f000000009a09043c0000000008a80436000000000058004b000007fe0000c13d000000000006004b0000080f0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f0002000000010355000000010020019000000c3c0000613d0000001f01400039000000600110018f00000080021001bf000400000002001d000000400020043f000000200030008c000000540000413d000000800200043d0000082d0020009c000000540000213d0000000203000039000000000303041a00000887040000410000000405000029000000000045043500000084041001bf0000000000340435000000c40310003900000005040000290000000000430435000000a403100039000000060400002900000000004304350000000003000414000000040020008c00000ea00000c13d0000000001150019000000400010043f000000040200002900000be30000013d0000082a0030009c0000082a03008041000000c00130021000000876011001c720a520a00000040f00000060031002700000082a03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000080057001bf000008450000613d0000008008000039000000000901034f000000009a09043c0000000008a80436000000000058004b000008410000c13d000000000006004b000008520000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f0002000000010355000000010020019000000c480000613d0000001f02400039000000600420018f00000080024001bf000400000002001d000000400020043f000000200030008c000000540000413d000000800200043d0000082d0020009c000000540000213d0000000205000039000000000505041a0000087706000041000000040a00002900000000006a043500000084064001bf0000000000560435000000c40540003900000005060000290000000000650435000000a404400039000000060500002900000000005404350000000004000414000000040020008c0000087e0000613d0000004001a002100000082a0040009c0000082a04008041000000c003400210000000000113019f00000878011001c720a520a00000040f00000060031002700000082a0030019d0000082a033001970002000000010355000000010020019000000ffa0000613d000000040a000029000008a8053001980000001f0630018f00000000045a0019000008880000613d000000000701034f00000000080a0019000000007907043c0000000008980436000000000048004b000008840000c13d000000000006004b000008950000613d000000000151034f0000000305600210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f00000000001404350000001f01300039000008a8041001970000000001a40019000000000041004b000000000400003900000001040040390000086a0010009c000011e50000213d0000000100400190000011e50000c13d000000400010043f000008790030009c000000540000213d000000200030008c000000540000413d000000040400002900000000040404330000086a0040009c000000540000213d000000040630002900000004034000290000001f04300039000000000064004b00000000050000190000087a050080410000087a044001970000087a07600197000000000874013f000000000074004b00000000040000190000087a040040410000087a0080009c000000000405c019000000000004004b000000540000c13d00000000430304340000086a0030009c000011e50000213d0000001f05300039000008a8055001970000003f05500039000008a80550019700000000051500190000086a0050009c000011e50000213d000000400050043f00000000053104360000000007430019000000000067004b000000540000213d000008a8063001970000001f0230018f000000000054004b000012f10000813d000000000006004b00000b850000613d00000000082400190000000007250019000000200770008a000000200880008a0000000009670019000000000a680019000000000a0a04330000000000a90435000000200660008c000008d10000c13d00000b850000013d0000082a0010009c0000082a01008041000000c00110021000000876011001c720a520a00000040f00000060031002700000082a03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000080057001bf000008ec0000613d0000008008000039000000000901034f000000009a09043c0000000008a80436000000000058004b000008e80000c13d000000000006004b000008f90000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f0002000000010355000000010020019000000c8f0000613d0000001f01400039000000600110018f00000080021001bf000600000002001d000000400020043f000000200030008c000000540000413d000000800200043d0000082d0020009c000000540000213d0000000203000039000000000303041a00000881040000410000000605000029000000000045043500000084041001bf0000000000340435000000a403100039000000000003043500000004030000390000000103300367000000000303043b000000c40410003900000000003404350000000003000414000000040020008c00000ecf0000c13d0000000001150019000000400010043f000000060200002900000000020204330000082d0020009c000000540000213d00000be40000013d0000082a0010009c0000082a01008041000000c00110021000000866011001c720a520a00000040f000000800a00003900000060031002700000082a03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000080057001bf000009330000613d000000000801034f000000008908043c000000000a9a043600000000005a004b0000092f0000c13d000000000006004b000009400000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f0002000000010355000000010020019000000c9b0000613d0000001f01400039000000600110018f00000080011001bf000000400010043f000000200030008c000000540000413d000000800100043d000000000001004b0000000002000039000000010200c039000000000021004b000000540000c13d000000000001004b00000c870000613d000000060100002920a51fdb0000040f0000000101000039000000000201041a000000400b00043d000008670100004100000000001b04350000000401b0003900000868030000410000000000310435000000000100041400000008022002700000082d02200197000000040020008c000010060000c13d0000000003000031000000200030008c00000020040000390000000004034019000010320000013d0000082a0030009c0000082a03008041000000c00130021000000876011001c720a520a00000040f00000060031002700000082a03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000080057001bf0000097a0000613d0000008008000039000000000901034f000000009a09043c0000000008a80436000000000058004b000009760000c13d000000000006004b000009870000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f0002000000010355000000010020019000000ce30000613d0000001f02400039000000600420018f00000080024001bf000600000002001d000000400020043f000000200030008c000000540000413d000000800200043d0000082d0020009c000000540000213d0000000205000039000000000505041a0000087706000041000000060a00002900000000006a043500000084064001bf0000000000560435000000c40540003900000890060000410000000000650435000000a40440003900000000000404350000000004000414000000040020008c000009b20000613d0000004001a002100000082a0040009c0000082a04008041000000c003400210000000000113019f00000878011001c720a520a00000040f00000060031002700000082a0030019d0000082a0330019700020000000103550000000100200190000010a30000613d000000060a000029000008a8053001980000001f0630018f00000000045a0019000009bc0000613d000000000701034f00000000080a0019000000007907043c0000000008980436000000000048004b000009b80000c13d000000000006004b000009c90000613d000000000151034f0000000305600210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f00000000001404350000001f01300039000008a8041001970000000001a40019000000000041004b000000000400003900000001040040390000086a0010009c000011e50000213d0000000100400190000011e50000c13d000000400010043f000008790030009c000000540000213d000000200030008c000000540000413d000000060400002900000000040404330000086a0040009c000000540000213d000000060630002900000006034000290000001f04300039000000000064004b00000000050000190000087a050080410000087a044001970000087a07600197000000000874013f000000000074004b00000000040000190000087a040040410000087a0080009c000000000405c019000000000004004b000000540000c13d00000000430304340000086a0030009c000011e50000213d0000001f05300039000008a8055001970000003f05500039000008a80550019700000000051500190000086a0050009c000011e50000213d000000400050043f00000000053104360000000007430019000000000067004b000000540000213d000008a8063001970000001f0230018f000000000054004b000012fb0000813d000000000006004b00000b850000613d00000000082400190000000007250019000000200770008a000000200880008a0000000009670019000000000a680019000000000a0a04330000000000a90435000000200660008c00000a050000c13d00000b850000013d0000082a0010009c0000082a01008041000000c00110021000000876011001c720a520a00000040f00000060031002700000082a03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000080057001bf00000a200000613d0000008008000039000000000901034f000000009a09043c0000000008a80436000000000058004b00000a1c0000c13d000000000006004b00000a2d0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f0002000000010355000000010020019000000cef0000613d0000001f01400039000000600110018f00000080021001bf000500000002001d000000400020043f000000200030008c000000540000413d000000800200043d0000082d0020009c000000540000213d00000895030000410000000505000029000000000035043500000084031001bf000000060400002900000000004304350000000003000414000000040020008c00000efe0000c13d0000000002150019000000400020043f000000050100002900000000030104330000082d0030009c000000540000213d0000000001000411000000000013004b000011470000c13d000000060200002920a51f1a0000040f0000000001000019000020a60001042e0000082a0010009c0000082a01008041000000c00110021000000876011001c720a520a00000040f00000060031002700000082a03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000080057001bf00000a650000613d0000008008000039000000000901034f000000009a09043c0000000008a80436000000000058004b00000a610000c13d000000000006004b00000a720000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f0002000000010355000000010020019000000d360000613d0000001f01400039000000600110018f00000080021001bf000400000002001d000000400020043f000000200030008c000000540000413d000000800200043d0000082d0020009c000000540000213d0000000203000039000000000303041a0000087f040000410000000405000029000000000045043500000084041001bf0000000000340435000000c40310003900000005040000290000000000430435000000a403100039000000060400002900000000004304350000000003000414000000040020008c00000f2d0000c13d0000000001150019000000400010043f00000004020000290000000002020433000000000002004b0000000003000039000000010300c039000000000032004b000000540000c13d00000be40000013d0000082a0010009c0000082a01008041000000c00110021000000876011001c720a520a00000040f00000060031002700000082a03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000080057001bf00000aae0000613d0000008008000039000000000901034f000000009a09043c0000000008a80436000000000058004b00000aaa0000c13d000000000006004b00000abb0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f0002000000010355000000010020019000000d420000613d0000001f01400039000000600110018f00000080021001bf000600000002001d000000400020043f000000200030008c000000540000413d000000800200043d0000082d0020009c000000540000213d0000000203000039000000000303041a00000887040000410000000605000029000000000045043500000084041001bf0000000000340435000000a403100039000000000003043500000004030000390000000103300367000000000303043b000000c40410003900000000003404350000000003000414000000040020008c00000f5c0000c13d0000000001150019000000400010043f000000060200002900000be30000013d0000082a0030009c0000082a03008041000000c00130021000000876011001c720a520a00000040f00000060031002700000082a03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000080057001bf00000af20000613d0000008008000039000000000901034f000000009a09043c0000000008a80436000000000058004b00000aee0000c13d000000000006004b00000aff0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f0002000000010355000000010020019000000d4e0000613d0000001f02400039000000600420018f00000080024001bf000600000002001d000000400020043f000000200030008c000000540000413d000000800200043d0000082d0020009c000000540000213d0000000205000039000000000505041a0000087706000041000000060a00002900000000006a043500000084064001bf0000000000560435000000a405400039000000000005043500000004050000390000000105500367000000000505043b000000c40440003900000000005404350000000004000414000000040020008c00000b2c0000613d0000004001a002100000082a0040009c0000082a04008041000000c003400210000000000113019f00000878011001c720a520a00000040f00000060031002700000082a0030019d0000082a03300197000200000001035500000001002001900000113b0000613d000000060a000029000008a8053001980000001f0630018f00000000045a001900000b360000613d000000000701034f00000000080a0019000000007907043c0000000008980436000000000048004b00000b320000c13d000000000006004b00000b430000613d000000000151034f0000000305600210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f00000000001404350000001f01300039000008a8041001970000000001a40019000000000041004b000000000400003900000001040040390000086a0010009c000011e50000213d0000000100400190000011e50000c13d000000400010043f000008790030009c000000540000213d000000200030008c000000540000413d000000060400002900000000040404330000086a0040009c000000540000213d000000060630002900000006034000290000001f04300039000000000064004b00000000050000190000087a050080410000087a044001970000087a07600197000000000874013f000000000074004b00000000040000190000087a040040410000087a0080009c000000000405c019000000000004004b000000540000c13d00000000430304340000086a0030009c000011e50000213d0000001f05300039000008a8055001970000003f05500039000008a80550019700000000051500190000086a0050009c000011e50000213d000000400050043f00000000053104360000000007430019000000000067004b000000540000213d000008a8063001970000001f0230018f000000000054004b000013050000813d000000000006004b00000b850000613d00000000082400190000000007250019000000200770008a000000200880008a0000000009670019000000000a680019000000000a0a04330000000000a90435000000200660008c00000b7f0000c13d000000000002004b0000131b0000613d0000000007050019000013110000013d0000001f0530018f0000082c06300198000000400200043d00000000046200190000122e0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000b900000c13d0000122e0000013d0000001f0530018f0000082c06300198000000400200043d00000000046200190000122e0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000b9c0000c13d0000122e0000013d0000082a0010009c0000082a01008041000000c00110021000000876011001c720a520a00000040f00000060031002700000082a03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000080057001bf00000bb50000613d0000008008000039000000000901034f000000009a09043c0000000008a80436000000000058004b00000bb10000c13d000000000006004b00000bc20000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f0002000000010355000000010020019000000d5a0000613d0000001f01400039000000600110018f00000080021001bf000500000002001d000000400020043f000000200030008c000000540000413d000000800200043d0000082d0020009c000000540000213d0000000203000039000000000303041a00000887040000410000000505000029000000000045043500000084041001bf0000000000340435000000c40310003900000893040000410000000000430435000000a403100039000000060400002900000000004304350000000003000414000000040020008c00000fb30000c13d0000000001150019000000400010043f00000005020000290000000002020433000000000021043500000040011002100000087c011001c7000020a60001042e0000001f0530018f0000082c06300198000000400200043d00000000046200190000122e0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000bef0000c13d0000122e0000013d0000001f0530018f0000082c06300198000000400200043d00000000046200190000122e0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000bfb0000c13d0000122e0000013d0000001f0530018f0000082c06300198000000400200043d00000000046200190000122e0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000c070000c13d0000122e0000013d0000001f0530018f0000082c06300198000000400200043d00000000046200190000122e0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000c130000c13d0000122e0000013d0000001f0530018f0000082c06300198000000400200043d00000000046200190000122e0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000c1f0000c13d0000122e0000013d0000001f0530018f0000082c06300198000000400200043d00000000046200190000122e0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000c2b0000c13d0000122e0000013d0000001f0530018f0000082c06300198000000400200043d00000000046200190000122e0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000c370000c13d0000122e0000013d0000001f0530018f0000082c06300198000000400200043d00000000046200190000122e0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000c430000c13d0000122e0000013d0000001f0530018f0000082c06300198000000400200043d00000000046200190000122e0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000c4f0000c13d0000122e0000013d0000082a0010009c0000082a01008041000000c00110021000000866011001c720a520a00000040f00000060031002700000082a03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000080057001bf00000c680000613d0000008008000039000000000901034f000000009a09043c0000000008a80436000000000058004b00000c640000c13d000000000006004b00000c750000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f0002000000010355000000010020019000000d660000613d0000001f01400039000000600110018f00000080011001bf000000400010043f000000200030008c000000540000413d000000800100043d000000000001004b0000000002000039000000010200c039000000000021004b000000540000c13d000000000001004b000010800000c13d0000087001000041000000000010043f0000000501000029000000040010043f0000086501000041000000240010043f0000087101000041000020a7000104300000001f0530018f0000082c06300198000000400200043d00000000046200190000122e0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000c960000c13d0000122e0000013d0000001f0530018f0000082c06300198000000400200043d00000000046200190000122e0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000ca20000c13d0000122e0000013d0000082a0010009c0000082a01008041000000c00110021000000866011001c720a520a00000040f00000060031002700000082a03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000080057001bf00000cbb0000613d0000008008000039000000000901034f000000009a09043c0000000008a80436000000000058004b00000cb70000c13d000000000006004b00000cc80000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f0002000000010355000000010020019000000d720000613d0000001f01400039000000600110018f00000080021001bf000400000002001d000000400020043f000000200030008c000000540000413d000000800200043d000000000002004b0000000004000039000000010400c039000000000042004b000000540000c13d000000000002004b000010af0000c13d0000087001000041000000000010043f0000000501000029000000040010043f0000089801000041000000240010043f0000087101000041000020a7000104300000001f0530018f0000082c06300198000000400200043d00000000046200190000122e0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000cea0000c13d0000122e0000013d0000001f0530018f0000082c06300198000000400200043d00000000046200190000122e0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000cf60000c13d0000122e0000013d0000082a0010009c0000082a01008041000000c00110021000000866011001c720a520a00000040f00000060031002700000082a03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000080057001bf00000d0f0000613d0000008008000039000000000901034f000000009a09043c0000000008a80436000000000058004b00000d0b0000c13d000000000006004b00000d1c0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f0002000000010355000000010020019000000d7e0000613d0000001f01400039000000600210018f00000080012001bf000000400010043f000000200030008c000000540000413d000000800300043d000000000003004b0000000004000039000000010400c039000000000043004b000000540000c13d000000000003004b000011020000c13d0000087001000041000000000010043f0000000001000411000000040010043f0000089f01000041000000240010043f0000087101000041000020a7000104300000001f0530018f0000082c06300198000000400200043d00000000046200190000122e0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000d3d0000c13d0000122e0000013d0000001f0530018f0000082c06300198000000400200043d00000000046200190000122e0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000d490000c13d0000122e0000013d0000001f0530018f0000082c06300198000000400200043d00000000046200190000122e0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000d550000c13d0000122e0000013d0000001f0530018f0000082c06300198000000400200043d00000000046200190000122e0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000d610000c13d0000122e0000013d0000001f0530018f0000082c06300198000000400200043d00000000046200190000122e0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000d6d0000c13d0000122e0000013d0000001f0530018f0000082c06300198000000400200043d00000000046200190000122e0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000d790000c13d0000122e0000013d0000001f0530018f0000082c06300198000000400200043d00000000046200190000122e0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000d850000c13d0000122e0000013d000000c002100039000000400020043f0000000d0200003900000006040000290000000000240435000000a0041000390000088c0200004100000000002404350000000302000039000000000202041a000000ff0020019000000f8b0000c13d000500000004001d0000000102000039000000000202041a000000400b00043d000008670400004100000000004b04350000000404b0003900000868050000410000000000540435000000000400041400000008022002700000082d02200197000000040020008c00000dd20000613d0000082a00b0009c0000082a0100004100000000010b401900000040011002100000082a0040009c0000082a04008041000000c003400210000000000113019f00000869011001c700040000000b001d20a520a00000040f00000060031002700000082a03300197000000200030008c000000200400003900000000040340190000001f0640018f0000002007400190000000040b000029000000040570002900000dbf0000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b00000dbb0000c13d000000000006004b00000dcc0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f00020000000103550000000100200190000011c70000613d0000001f01400039000000600110018f0000000002b10019000000000012004b000000000100003900000001010040390000086a0020009c000011e50000213d0000000100100190000011e50000c13d000000400020043f000000200030008c000000540000413d00000000010b0433000400000001001d0000082d0010009c000000540000213d0000000201000039000000000101041a000300000001001d0000086b0100004100000000001004430000000401000029000000040010044300000000010004140000082a0010009c0000082a01008041000000c0011002100000086c011001c7000080020200003920a520a00000040f0000000100200190000016e40000613d000000000101043b000000000001004b000000540000613d000000400300043d00000064013000390000000002000410000000000021043500000044013000390000088e0200004100000000002104350000088f0100004100000000001304350000000401300039000100000001001d00000003020000290000000000210435000200000003001d0000002401300039000000000001043500000000010004140000000402000029000000040020008c00000e180000613d00000002020000290000082a0020009c0000082a0200804100000040022002100000082a0010009c0000082a01008041000000c001100210000000000121019f0000086f011001c7000000040200002920a5209b0000040f00000060031002700000082a0030019d00020000000103550000000100200190000013510000613d00000002010000290000086a0010009c000011e50000213d0000000203000029000000400030043f0000000101000039000000000201041a00000867010000410000000000130435000008680100004100000001030000290000000000130435000000000100041400000008022002700000082d02200197000000040020008c0000135e0000c13d0000000003000031000000200030008c00000020040000390000000004034019000013880000013d0000089d0100004100000000001004430000000001000410000000040010044300000000010004140000082a0010009c0000082a01008041000000c0011002100000086c011001c70000800a0200003920a520a00000040f0000000100200190000016e40000613d000000000301043b00000000010004140000000004000411000000040040008c000011580000c13d0000000001000031000011dc0000013d0000082a0030009c0000082a03008041000000c0013002100000004003500210000000000131019f00000878011001c720a520a00000040f000000060b00002900000060031002700000082a03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b001900000e590000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b00000e550000c13d000000000006004b00000e660000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f0002000000010355000000010020019000000fe20000613d0000001f01400039000000600110018f0000000001b10019000000400010043f000000200030008c000006c90000813d000000540000013d0000082a0030009c0000082a03008041000000c0013002100000004003500210000000000131019f00000878011001c720a520a00000040f000000040b00002900000060031002700000082a03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b001900000e880000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b00000e840000c13d000000000006004b00000e950000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f0002000000010355000000010020019000000fee0000613d0000001f01400039000000600110018f0000000001b10019000000400010043f000000200030008c000000540000413d0000077a0000013d0000082a0030009c0000082a03008041000000c0013002100000004003500210000000000131019f00000878011001c720a520a00000040f000000040b00002900000060031002700000082a03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b001900000eb70000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b00000eb30000c13d000000000006004b00000ec40000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f000200000001035500000001002001900000108b0000613d0000001f01400039000000600110018f0000000001b10019000000400010043f000000200030008c0000082f0000813d000000540000013d0000082a0030009c0000082a03008041000000c0013002100000004003500210000000000131019f00000878011001c720a520a00000040f000000060b00002900000060031002700000082a03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b001900000ee60000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b00000ee20000c13d000000000006004b00000ef30000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f00020000000103550000000100200190000010970000613d0000001f01400039000000600110018f0000000001b10019000000400010043f000000200030008c0000091a0000813d000000540000013d0000082a0030009c0000082a03008041000000c0013002100000004003500210000000000131019f00000869011001c720a520a00000040f000000050b00002900000060031002700000082a03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b001900000f150000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b00000f110000c13d000000000006004b00000f220000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f00020000000103550000000100200190000011170000613d0000001f01400039000000600110018f0000000002b10019000000400020043f000000200030008c00000a460000813d000000540000013d0000082a0030009c0000082a03008041000000c0013002100000004003500210000000000131019f00000878011001c720a520a00000040f000000040b00002900000060031002700000082a03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b001900000f440000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b00000f400000c13d000000000006004b00000f510000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f00020000000103550000000100200190000011230000613d0000001f01400039000000600110018f0000000001b10019000000400010043f000000200030008c000000540000413d00000a920000013d0000082a0030009c0000082a03008041000000c0013002100000004003500210000000000131019f00000878011001c720a520a00000040f000000060b00002900000060031002700000082a03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b001900000f730000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b00000f6f0000c13d000000000006004b00000f800000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f000200000001035500000001002001900000112f0000613d0000001f01400039000000600110018f0000000001b10019000000400010043f000000200030008c000000540000413d00000adc0000013d0000088d01000041000000000010043f0000087501000041000020a7000104300000001f0530018f0000082c06300198000000400200043d00000000046200190000122e0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000f960000c13d0000122e0000013d0000001f0530018f0000082c06300198000000400200043d00000000046200190000122e0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000fa20000c13d0000122e0000013d0000001f0530018f0000082c06300198000000400200043d00000000046200190000122e0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000fae0000c13d0000122e0000013d0000082a0030009c0000082a03008041000000c0013002100000004003500210000000000131019f00000878011001c720a520a00000040f000000050b00002900000060031002700000082a03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b001900000fca0000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b00000fc60000c13d000000000006004b00000fd70000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f000200000001035500000001002001900000115f0000613d0000001f01400039000000600110018f0000000001b10019000000400010043f000000200030008c00000be20000813d000000540000013d0000001f0530018f0000082c06300198000000400200043d00000000046200190000122e0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000fe90000c13d0000122e0000013d0000001f0530018f0000082c06300198000000400200043d00000000046200190000122e0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000ff50000c13d0000122e0000013d0000001f0530018f0000082c06300198000000400200043d00000000046200190000122e0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000010010000c13d0000122e0000013d0000082a00b0009c0000082a0300004100000000030b401900000040033002100000082a0010009c0000082a01008041000000c001100210000000000131019f00000869011001c700060000000b001d20a520a00000040f000000060b00002900000060031002700000082a03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b0019000010210000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b0000101d0000c13d000000000006004b0000102e0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f000200000001035500000001002001900000116b0000613d0000001f01400039000000600210018f0000000001b20019000000000021004b000000000200003900000001020040390000086a0010009c000011e50000213d0000000100200190000011e50000c13d000000400010043f000000200030008c000000540000413d00000000010b0433000600000001001d0000082d0010009c000000540000213d0000000201000039000000000101041a000500000001001d0000086b0100004100000000001004430000000601000029000000040010044300000000010004140000082a0010009c0000082a01008041000000c0011002100000086c011001c7000080020200003920a520a00000040f0000000100200190000016e40000613d000000000101043b000000000001004b000000540000613d000000400300043d00000064013000390000000402000029000000000021043500000044013000390000086d0200004100000000002104350000086e010000410000000000130435000000040130003900000005020000290000000000210435000500000003001d0000002401300039000000000001043500000000010004140000000602000029000000040020008c000010790000613d00000005020000290000082a0020009c0000082a0200804100000040022002100000082a0010009c0000082a01008041000000c001100210000000000121019f0000086f011001c7000000060200002920a5209b0000040f00000060031002700000082a0030019d000200000001035500000001002001900000132c0000613d00000005010000290000086a0010009c000011e50000213d0000000501000029000000400010043f0000000001000019000020a60001042e000000060300002900000008013002100000082f011001970000000104000039000000000204041a0000087302200197000000000112019f000000000014041b000000000003004b000000a70000613d000011e10000013d0000001f0530018f0000082c06300198000000400200043d00000000046200190000122e0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000010920000c13d0000122e0000013d0000001f0530018f0000082c06300198000000400200043d00000000046200190000122e0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b0000109e0000c13d0000122e0000013d0000001f0530018f0000082c06300198000000400200043d00000000046200190000122e0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000010aa0000c13d0000122e0000013d0000000102000039000000000202041a00000867040000410000000405000029000000000045043500000084011001bf00000868040000410000000000410435000000000100041400000008022002700000082d02200197000000040020008c000011770000c13d000000200030008c00000020030080390000001f01300039000000600110018f0000000001510019000000400010043f00000004010000290000000001010433000500000001001d0000082d0010009c000000540000213d0000000201000039000000000101041a000400000001001d0000086b0100004100000000001004430000000501000029000000040010044300000000010004140000082a0010009c0000082a01008041000000c0011002100000086c011001c7000080020200003920a520a00000040f0000000100200190000016e40000613d000000000101043b000000000001004b000000540000613d000000400300043d0000004401300039000008930200004100000000002104350000002401300039000000060200002900000000002104350000086e010000410000000000130435000000040130003900000004020000290000000000210435000600000003001d0000006401300039000000000001043500000000010004140000000502000029000000040020008c000010fd0000613d00000006020000290000082a0020009c0000082a0200804100000040022002100000082a0010009c0000082a01008041000000c001100210000000000121019f0000086f011001c7000000050200002920a5209b0000040f00000060031002700000082a0030019d00020000000103550000000100200190000012e40000613d0000000601000029000000000200001920a5173d0000040f0000000001000019000020a60001042e0000000103000039000000000503041a000000ff0450018f000000060000006b000011a50000c13d000000000004004b000011b90000613d000008a902500197000000000023041b00000000020004110000000000210435000000400110021000000000020004140000082a0020009c0000082a02008041000000c002200210000000000112019f000008a0011001c70000800d02000039000008a204000041000011b50000013d0000001f0530018f0000082c06300198000000400200043d00000000046200190000122e0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b0000111e0000c13d0000122e0000013d0000001f0530018f0000082c06300198000000400200043d00000000046200190000122e0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b0000112a0000c13d0000122e0000013d0000001f0530018f0000082c06300198000000400200043d00000000046200190000122e0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000011360000c13d0000122e0000013d0000001f0530018f0000082c06300198000000400200043d00000000046200190000122e0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000011420000c13d0000122e0000013d0000088601000041000000000012043500000004012001bf0000002003000039000000000031043500000064012000390000089603000041000000000031043500000044012000390000089703000041000000000031043500000024012000390000002f03000039000000000031043500000040012002100000086f011001c7000020a7000104300000082a0010009c0000082a01008041000000c001100210000000000003004b000011d30000c13d0000000002040019000011d60000013d0000001f0530018f0000082c06300198000000400200043d00000000046200190000122e0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000011660000c13d0000122e0000013d0000001f0530018f0000082c06300198000000400200043d00000000046200190000122e0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000011720000c13d0000122e0000013d0000082a0010009c0000082a01008041000000c0011002100000004003500210000000000131019f00000869011001c720a520a00000040f00000060031002700000082a03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000004057000290000118d0000613d000000000801034f0000000409000029000000008a08043c0000000009a90436000000000059004b000011890000c13d000000000006004b0000119a0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f00020000000103550000000100200190000012230000613d0000001f01400039000000600110018f0000000401100029000000400010043f000000200030008c000010c20000813d000000540000013d000000000004004b000011b90000c13d000008a90250019700000001022001bf000000000023041b00000000020004110000000000210435000000400110021000000000020004140000082a0020009c0000082a02008041000000c002200210000000000112019f000008a0011001c70000800d02000039000008a10400004120a5209b0000040f0000000100200190000000540000613d000011e10000013d0000088603000041000000000031043500000084032001bf00000020040000390000000000430435000000c403200039000008a3040000410000000000430435000000a40220003900000014030000390000000000320435000000400110021000000878011001c7000020a7000104300000001f0530018f0000082c06300198000000400200043d00000000046200190000122e0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000011ce0000c13d0000122e0000013d00000899011001c70000800902000039000000000500001920a5209b0000040f000500000002001d000200000001035500000060011002700000082a0010019d0000082a01100197000000000001004b000011e30000c13d00000005010000290000000100100190000011eb0000613d0000000001000019000020a60001042e0000086a0010009c000011fc0000a13d000008a401000041000000000010043f0000004101000039000000040010043f0000086901000041000020a700010430000000400100043d00000044021000390000089e03000041000000000032043500000024021000390000000f030000390000000000320435000008860200004100000000002104350000000402100039000000200300003900000000003204350000082a0010009c0000082a01008041000000400110021000000878011001c7000020a7000104300000001f03100039000008a8033001970000003f03300039000008a804300197000000400300043d0000000004430019000000000034004b000000000500003900000001050040390000086a0040009c000011e50000213d0000000100500190000011e50000c13d000000400040043f0000000005130436000008a8021001980000001f0310018f00000000012500190000000204000367000012150000613d000000000604034f000000006706043c0000000005750436000000000015004b000012110000c13d000000000003004b000011de0000613d000000000224034f0000000303300210000000000401043300000000043401cf000000000434022f000000000202043b0000010003300089000000000232022f00000000023201cf000000000242019f0000000000210435000011de0000013d0000001f0530018f0000082c06300198000000400200043d00000000046200190000122e0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b0000122a0000c13d000000000005004b0000123b0000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f000000000014043500000060013002100000082a0020009c0000082a020080410000004002200210000000000112019f000020a700010430000000050100002900000044021000390000088503000041000000000032043500000024021000390000001003000039000011f10000013d00000005030000290000082a0030009c0000082a0300804100000040033002100000082a0010009c0000082a01008041000000c001100210000000000131019f00000875011001c720a520a00000040f00000060031002700000082a03300197000000200030008c000000200400003900000000040340190000001f0640018f00000020074001900000000505700029000012610000613d000000000801034f0000000509000029000000008a08043c0000000009a90436000000000059004b0000125d0000c13d000000000006004b0000126e0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f00020000000103550000000100200190000013390000613d0000001f01400039000000600210018f0000000501200029000000000021004b000000000200003900000001020040390000086a0010009c000011e50000213d0000000100200190000011e50000c13d000000400010043f000000200030008c000000540000413d00000005020000290000000002020433000000000002004b0000000003000039000000010300c039000000000032004b000000540000c13d000000000002004b000012420000c13d20a5175e0000040f000500000001001d000000000001004b000014000000c13d000000400100043d00000044021000390000089c03000041000000000032043500000024021000390000001203000039000011f10000013d00000005030000290000082a0030009c0000082a0300804100000040033002100000082a0010009c0000082a01008041000000c001100210000000000131019f00000875011001c720a520a00000040f00000060031002700000082a03300197000000200030008c000000200400003900000000040340190000001f0640018f00000020074001900000000505700029000012ac0000613d000000000801034f0000000509000029000000008a08043c0000000009a90436000000000059004b000012a80000c13d000000000006004b000012b90000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f00020000000103550000000100200190000013450000613d0000001f01400039000000600110018f0000000502100029000000000012004b00000000010000390000000101004039000400000002001d0000086a0020009c000011e50000213d0000000100100190000011e50000c13d0000000401000029000000400010043f000000200030008c000000540000413d00000005010000290000000001010433000000000001004b0000000002000039000000010200c039000000000021004b000000540000c13d000000000001004b000013ee0000c13d0000000101000039000000000201041a000008670100004100000004040000290000000000140435000000040140003900000868040000410000000000410435000000000100041400000008022002700000082d02200197000000040020008c0000140a0000c13d0000002004000039000014340000013d0000082a033001970000001f0530018f0000082c06300198000000400200043d00000000046200190000122e0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000012ec0000c13d0000122e0000013d0000000007650019000000000006004b0000130e0000613d00000000080400190000000009050019000000008a0804340000000009a90436000000000079004b000012f60000c13d0000130e0000013d0000000007650019000000000006004b0000130e0000613d00000000080400190000000009050019000000008a0804340000000009a90436000000000079004b000013000000c13d0000130e0000013d0000000007650019000000000006004b0000130e0000613d00000000080400190000000009050019000000008a0804340000000009a90436000000000079004b0000130a0000c13d000000000002004b0000131b0000613d00000000046400190000000302200210000000000607043300000000062601cf000000000626022f00000000040404330000010002200089000000000424022f00000000022401cf000000000262019f0000000000270435000000000253001900000000000204350000002002000039000000400300043d000600000003001d000000000223043620a5170b0000040f000000060200002900000000012100490000082a0010009c0000082a0100804100000060011002100000082a0020009c0000082a020080410000004002200210000000000121019f000020a60001042e0000082a033001970000001f0530018f0000082c06300198000000400200043d00000000046200190000122e0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000013340000c13d0000122e0000013d0000001f0530018f0000082c06300198000000400200043d00000000046200190000122e0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000013400000c13d0000122e0000013d0000001f0530018f0000082c06300198000000400200043d00000000046200190000122e0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b0000134c0000c13d0000122e0000013d0000082a033001970000001f0530018f0000082c06300198000000400200043d00000000046200190000122e0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000013590000c13d0000122e0000013d00000002030000290000082a0030009c0000082a0300804100000040033002100000082a0010009c0000082a01008041000000c001100210000000000131019f00000869011001c720a520a00000040f00000060031002700000082a03300197000000200030008c000000200400003900000000040340190000001f0640018f00000020074001900000000205700029000013770000613d000000000801034f0000000209000029000000008a08043c0000000009a90436000000000059004b000013730000c13d000000000006004b000013840000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f00020000000103550000000100200190000013e20000613d0000001f01400039000000600110018f00000002011000290000086a0010009c000011e50000213d000000400010043f000000200030008c000000540000413d00000002010000290000000001010433000400000001001d0000082d0010009c000000540000213d0000000201000039000000000101041a000300000001001d0000086b0100004100000000001004430000000401000029000000040010044300000000010004140000082a0010009c0000082a01008041000000c0011002100000086c011001c7000080020200003920a520a00000040f0000000100200190000016e40000613d000000000101043b000000000001004b000000540000613d000000400300043d0000006401300039000000000200041100000000002104350000004401300039000008820200004100000000002104350000088f0100004100000000001304350000000401300039000100000001001d00000003020000290000000000210435000200000003001d0000002401300039000000000001043500000000010004140000000402000029000000040020008c000013cc0000613d00000002020000290000082a0020009c0000082a0200804100000040022002100000082a0010009c0000082a01008041000000c001100210000000000121019f0000086f011001c7000000040200002920a5209b0000040f00000060031002700000082a0030019d00020000000103550000000100200190000014f20000613d00000002010000290000086a0010009c000011e50000213d0000000203000029000000400030043f0000000101000039000000000201041a00000867010000410000000000130435000008680100004100000001030000290000000000130435000000000100041400000008022002700000082d02200197000000040020008c0000150b0000c13d0000000003000031000000200030008c00000020040000390000000004034019000015350000013d0000001f0530018f0000082c06300198000000400200043d00000000046200190000122e0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000013e90000c13d0000122e0000013d000500040000002d0000000503000029000000440130003900000885020000410000000000210435000000240130003900000010020000390000000000210435000008860100004100000000001304350000000401300039000000200200003900000000002104350000082a0030009c0000082a03008041000000400130021000000878011001c7000020a70001043000000000020004160003000500200074000014970000813d000000400100043d00000044021000390000089b03000041000000000032043500000024021000390000001403000039000011f10000013d00000004030000290000082a0030009c0000082a0300804100000040033002100000082a0010009c0000082a01008041000000c001100210000000000131019f00000869011001c720a520a00000040f00000060031002700000082a03300197000000200030008c000000200400003900000000040340190000001f0640018f00000020074001900000000405700029000014230000613d000000000801034f0000000409000029000000008a08043c0000000009a90436000000000059004b0000141f0000c13d000000000006004b000014300000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f00020000000103550000000100200190000014a40000613d0000001f01400039000000600110018f0000000402100029000500000002001d0000086a0020009c000011e50000213d0000000502000029000000400020043f000000200030008c000000540000413d000000040200002900000000020204330000082d0020009c000000540000213d0000000204000039000000000404041a000000050700002900000044057000390000086d0600004100000000006504350000088705000041000000000057043500000004057000390000000000450435000000240470003900000000000404350000000004000414000000040020008c0000147d0000613d00000005010000290000082a0010009c0000082a0100804100000040011002100000082a0040009c0000082a04008041000000c003400210000000000113019f00000878011001c720a520a00000040f00000060031002700000082a03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000005057000290000146a0000613d000000000801034f0000000509000029000000008a08043c0000000009a90436000000000059004b000014660000c13d000000000006004b000014770000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f00020000000103550000000100200190000014ff0000613d0000001f01400039000000600110018f0000000502100029000400000002001d0000086a0020009c000011e50000213d0000000402000029000000400020043f000000200030008c000000540000413d0000000402000029000000040220003900000005040000290000000004040433000500000004001d000000000004004b0000158a0000c13d0000088601000041000000040300002900000000001304350000002001000039000000000012043500000044013000390000088a02000041000000000021043500000024013000390000001702000039000013fa0000013d00000000010004110000008002000039000000060300002920a51a940000040f0000000002000416000000050020006c000011e10000613d00000000010004140000000002000411000000040020008c000014b00000c13d0000000001000031000014be0000013d0000001f0530018f0000082c06300198000000400200043d00000000046200190000122e0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000014ab0000c13d0000122e0000013d0000082a0010009c0000082a01008041000000c00110021000000899011001c7000080090200003900000003030000290000000004000411000000000500001920a5209b0000040f0004000100200193000200000001035500000060011002700000082a0010019d0000082a01100197000000000001004b000014c90000c13d000000040000006b000011e10000c13d000000400100043d00000044021000390000089a03000041000000000032043500000024021000390000001b03000039000011f10000013d0000086a0010009c000011e50000213d0000001f02100039000008a8022001970000003f02200039000008a803200197000000400200043d0000000003320019000000000023004b000000000400003900000001040040390000086a0030009c000011e50000213d0000000100400190000011e50000c13d000000400030043f0000000005120436000008a8021001980000001f0310018f00000000012500190000000204000367000014e40000613d000000000604034f000000006706043c0000000005750436000000000015004b000014e00000c13d000000000003004b000014c00000613d000000000224034f0000000303300210000000000401043300000000043401cf000000000434022f000000000202043b0000010003300089000000000232022f00000000023201cf000000000242019f0000000000210435000014c00000013d0000082a033001970000001f0530018f0000082c06300198000000400200043d00000000046200190000122e0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000014fa0000c13d0000122e0000013d0000001f0530018f0000082c06300198000000400200043d00000000046200190000122e0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000015060000c13d0000122e0000013d00000002030000290000082a0030009c0000082a0300804100000040033002100000082a0010009c0000082a01008041000000c001100210000000000131019f00000869011001c720a520a00000040f00000060031002700000082a03300197000000200030008c000000200400003900000000040340190000001f0640018f00000020074001900000000205700029000015240000613d000000000801034f0000000209000029000000008a08043c0000000009a90436000000000059004b000015200000c13d000000000006004b000015310000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f000200000001035500000001002001900000157e0000613d0000001f01400039000000600110018f00000002011000290000086a0010009c000011e50000213d000000400010043f000000200030008c000000540000413d00000002010000290000000001010433000400000001001d0000082d0010009c000000540000213d0000000201000039000000000101041a000300000001001d0000086b0100004100000000001004430000000401000029000000040010044300000000010004140000082a0010009c0000082a01008041000000c0011002100000086c011001c7000080020200003920a520a00000040f0000000100200190000016e40000613d000000000101043b000000000001004b000000540000613d000000400300043d000000640130003900000080020000390000000000210435000000440130003900000890020000410000000000210435000008910100004100000000001304350000000401300039000100000001001d00000003020000290000000000210435000000240130003900000000000104350000000601000029000000000101043300000084023000390000000000120435000008a8051001970000001f0410018f000200000003001d000000a403300039000000050030006b000016150000813d000000000005004b0000157a0000613d00000005074000290000000006430019000000200660008a000000200770008a0000000008560019000000000957001900000000090904330000000000980435000000200550008c000015740000c13d000000000004004b0000162c0000613d0000000006030019000016210000013d0000001f0530018f0000082c06300198000000400200043d00000000046200190000122e0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000015850000c13d0000122e0000013d0000000104000039000000000504041a00000867040000410000000406000029000000000046043500000888040000410000000000420435000000000400041400000008025002700000082d02200197000000040020008c000015c20000613d00000004010000290000082a0010009c0000082a0100804100000040011002100000082a0040009c0000082a04008041000000c003400210000000000113019f00000869011001c720a520a00000040f00000060031002700000082a03300197000000200030008c000000200400003900000000040340190000001f0640018f00000020074001900000000405700029000015af0000613d000000000801034f0000000409000029000000008a08043c0000000009a90436000000000059004b000015ab0000c13d000000000006004b000015bc0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f00020000000103550000000100200190000016090000613d0000001f01400039000000600110018f00000004011000290000086a0010009c000011e50000213d000000400010043f000000200030008c000000540000413d00000004010000290000000001010433000400000001001d0000082d0010009c000000540000213d0000086b0100004100000000001004430000000401000029000000040010044300000000010004140000082a0010009c0000082a01008041000000c0011002100000086c011001c7000080020200003920a520a00000040f0000000100200190000016e40000613d000000000101043b000000000001004b000000540000613d000000400300043d00000044013000390000000102000039000000000021043500000024013000390000000502000029000000000021043500000889010000410000000000130435000500000003001d00000004013000390000000002000411000000000021043500000000010004140000000402000029000000040020008c000015fe0000613d00000005020000290000082a0020009c0000082a0200804100000040022002100000082a0010009c0000082a01008041000000c001100210000000000121019f00000878011001c7000000040200002920a5209b0000040f00000060031002700000082a0030019d00020000000103550000000100200190000016f10000613d00000005010000290000086a0010009c000011e50000213d0000000501000029000000400010043f00000080020000390000000001000411000000060300002920a51a940000040f0000000001000019000020a60001042e0000001f0530018f0000082c06300198000000400200043d00000000046200190000122e0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000016100000c13d0000122e0000013d0000000006530019000000000005004b0000161e0000613d0000000507000029000000000803001900000000790704340000000008980436000000000068004b0000161a0000c13d000000000004004b0000162c0000613d000500050050002d0000000304400210000000000506043300000000054501cf000000000545022f000000050700002900000000070704330000010004400089000000000747022f00000000044701cf000000000454019f00000000004604350000000003310019000000000003043500000000030004140000000404000029000000040040008c000016480000613d0000001f01100039000008a801100197000000a4011000390000082a0010009c0000082a01008041000000600110021000000002020000290000082a0020009c0000082a020080410000004002200210000000000121019f0000082a0030009c0000082a03008041000000c002300210000000000121019f000000040200002920a5209b0000040f00000060031002700000082a0030019d000200000001035500000001002001900000165e0000613d00000002010000290000086a0010009c000011e50000213d0000000203000029000000400030043f0000000101000039000000000201041a00000867010000410000000000130435000008680100004100000001030000290000000000130435000000000100041400000008022002700000082d02200197000000040020008c0000166b0000c13d0000000003000031000000200030008c00000020040000390000000004034019000016950000013d0000082a033001970000001f0530018f0000082c06300198000000400200043d00000000046200190000122e0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000016660000c13d0000122e0000013d00000002030000290000082a0030009c0000082a0300804100000040033002100000082a0010009c0000082a01008041000000c001100210000000000131019f00000869011001c720a520a00000040f00000060031002700000082a03300197000000200030008c000000200400003900000000040340190000001f0640018f00000020074001900000000205700029000016840000613d000000000801034f0000000209000029000000008a08043c0000000009a90436000000000059004b000016800000c13d000000000006004b000016910000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f00020000000103550000000100200190000016e50000613d0000001f01400039000000600110018f00000002011000290000086a0010009c000011e50000213d000000400010043f000000200030008c000000540000413d00000002010000290000000001010433000600000001001d0000082d0010009c000000540000213d0000000201000039000000000101041a000500000001001d0000086b0100004100000000001004430000000601000029000000040010044300000000010004140000082a0010009c0000082a01008041000000c0011002100000086c011001c7000080020200003920a520a00000040f0000000100200190000016e40000613d000000000101043b000000000001004b000000540000613d000000400300043d0000006401300039000008300200004100000000002104350000004401300039000008920200004100000000002104350000086e010000410000000000130435000000040130003900000005020000290000000000210435000500000003001d0000002401300039000000000001043500000000010004140000000602000029000000040020008c000016d80000613d00000005020000290000082a0020009c0000082a0200804100000040022002100000082a0010009c0000082a01008041000000c001100210000000000121019f0000086f011001c7000000060200002920a5209b0000040f00000060031002700000082a0030019d00020000000103550000000100200190000016fe0000613d00000005010000290000086a0010009c000011e50000213d0000000501000029000000400010043f0000000303000039000000000103041a000008a90110019700000001011001bf000000000013041b0000000001000019000020a60001042e000000000001042f0000001f0530018f0000082c06300198000000400200043d00000000046200190000122e0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000016ec0000c13d0000122e0000013d0000082a033001970000001f0530018f0000082c06300198000000400200043d00000000046200190000122e0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000016f90000c13d0000122e0000013d0000082a033001970000001f0530018f0000082c06300198000000400200043d00000000046200190000122e0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000017060000c13d0000122e0000013d00000000430104340000000001320436000008a8063001970000001f0530018f000000000014004b000017210000813d000000000006004b0000171d0000613d00000000085400190000000007510019000000200770008a000000200880008a0000000009670019000000000a680019000000000a0a04330000000000a90435000000200660008c000017170000c13d000000000005004b000017370000613d00000000070100190000172d0000013d0000000007610019000000000006004b0000172a0000613d00000000080400190000000009010019000000008a0804340000000009a90436000000000079004b000017260000c13d000000000005004b000017370000613d00000000046400190000000305500210000000000607043300000000065601cf000000000656022f00000000040404330000010005500089000000000454022f00000000045401cf000000000464019f0000000000470435000000000431001900000000000404350000001f03300039000008a8023001970000000001210019000000000001042d0000001f02200039000008a8022001970000000001120019000000000021004b000000000200003900000001020040390000086a0010009c000017490000213d0000000100200190000017490000c13d000000400010043f000000000001042d000008a401000041000000000010043f0000004101000039000000040010043f0000086901000041000020a70001043000000020030000390000000004310436000000000302043300000000003404350000004001100039000000000003004b0000175d0000613d00000000040000190000002002200039000000000502043300000000015104360000000104400039000000000034004b000017570000413d000000000001042d00010000000000020000000101000039000000000201041a000000400c00043d000008670100004100000000001c04350000000401c0003900000868030000410000000000310435000000000100041400000008022002700000082d02200197000000040020008c000017710000c13d0000000003000031000000200030008c000000200400003900000000040340190000179d0000013d0000082a00c0009c0000082a0300004100000000030c401900000040033002100000082a0010009c0000082a01008041000000c001100210000000000131019f00000869011001c700010000000c001d20a520a00000040f000000010c00002900000060031002700000082a03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057c00190000178c0000613d000000000801034f00000000090c0019000000008a08043c0000000009a90436000000000059004b000017880000c13d000000000006004b000017990000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f00020000000103550000000100200190000017f90000613d0000001f01400039000000600110018f000000000bc1001900000000001b004b000000000200003900000001020040390000086a00b0009c000017f30000213d0000000100200190000017f30000c13d0000004000b0043f0000001f0030008c000017f10000a13d00000000020c04330000082d0020009c000017f10000213d0000000204000039000000000404041a0000004405b00039000008aa060000410000000000650435000008870500004100000000005b04350000000405b0003900000000004504350000002404b0003900000000000404350000000004000414000000040020008c000017e90000613d0000082a00b0009c0000082a0100004100000000010b401900000040011002100000082a0040009c0000082a04008041000000c003400210000000000113019f00000878011001c700010000000b001d20a520a00000040f000000010b00002900000060031002700000082a03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b0019000017d60000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b000017d20000c13d000000000006004b000017e30000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f00020000000103550000000100200190000018170000613d0000001f01400039000000600110018f0000000001b100190000086a0010009c000017f30000213d000000400010043f000000200030008c000017f10000413d00000000010b0433000000000001042d0000000001000019000020a700010430000008a401000041000000000010043f0000004101000039000000040010043f0000086901000041000020a7000104300000001f0530018f0000082c06300198000000400200043d0000000004620019000018040000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000018000000c13d000000000005004b000018110000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f000000000014043500000060013002100000082a0020009c0000082a020080410000004002200210000000000112019f000020a7000104300000001f0530018f0000082c06300198000000400200043d0000000004620019000018220000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b0000181e0000c13d000000000005004b0000182f0000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f000000000014043500000060013002100000082a0020009c0000082a020080410000004002200210000000000121019f000020a70001043000010000000000020000000101000039000000000201041a000000ff01200190000018860000c13d000000400b00043d000008840100004100000000001b0435000000000100041400000008022002700000082d02200197000000040020008c000018470000c13d0000000003000031000000200030008c00000020040000390000000004034019000018730000013d0000082a00b0009c0000082a0300004100000000030b401900000040033002100000082a0010009c0000082a01008041000000c001100210000000000131019f00000875011001c700010000000b001d20a520a00000040f000000010b00002900000060031002700000082a03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b0019000018620000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b0000185e0000c13d000000000006004b0000186f0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f000200000001035500000001002001900000188f0000613d0000001f01400039000000600210018f0000000001b20019000000000021004b000000000200003900000001020040390000086a0010009c000018890000213d0000000100200190000018890000c13d000000400010043f0000001f0030008c000018870000a13d00000000010b0433000000000001004b0000000002000039000000010200c039000000000021004b000018870000c13d000000000001042d0000000001000019000020a700010430000008a401000041000000000010043f0000004101000039000000040010043f0000086901000041000020a7000104300000001f0530018f0000082c06300198000000400200043d00000000046200190000189a0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000018960000c13d000000000005004b000018a70000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f000000000014043500000060013002100000082a0020009c0000082a020080410000004002200210000000000121019f000020a70001043000020000000000020000000102000039000000000202041a000000400c00043d000008670300004100000000003c04350000000404c0003900000868030000410000000000340435000000000400041400000008022002700000082d02200197000000040020008c000018c00000c13d0000000003000031000000200030008c00000020040000390000000004034019000018ee0000013d000100000001001d0000082a00c0009c0000082a0300004100000000030c401900000040033002100000082a0040009c0000082a04008041000000c001400210000000000131019f00000869011001c700020000000c001d20a520a00000040f000000020c00002900000060031002700000082a03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057c0019000018dc0000613d000000000801034f00000000090c0019000000008a08043c0000000009a90436000000000059004b000018d80000c13d000000000006004b000018e90000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f000200000001035500000001002001900000194a0000613d00000001010000290000001f02400039000000600720018f000000000bc7001900000000007b004b000000000200003900000001020040390000086a00b0009c000019440000213d0000000100200190000019440000c13d0000004000b0043f0000001f0030008c000019420000a13d00000000020c04330000082d0020009c000019420000213d0000000204000039000000000404041a0000004405b00039000008ab0600004100000000006504350000002405b000390000000000150435000008870500004100000000005b04350000000405b0003900000000004504350000000004000414000000040020008c0000193a0000613d0000082a00b0009c0000082a0100004100000000010b401900000040011002100000082a0040009c0000082a04008041000000c003400210000000000113019f00000878011001c700020000000b001d20a520a00000040f000000020b00002900000060031002700000082a03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b0019000019270000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b000019230000c13d000000000006004b000019340000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f00020000000103550000000100200190000019680000613d0000001f01400039000000600710018f0000000001b700190000086a0010009c000019440000213d000000400010043f000000200030008c000019420000413d00000000010b0433000000000001042d0000000001000019000020a700010430000008a401000041000000000010043f0000004101000039000000040010043f0000086901000041000020a7000104300000001f0530018f0000082c06300198000000400200043d0000000004620019000019550000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000019510000c13d000000000005004b000019620000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f000000000014043500000060013002100000082a0020009c0000082a020080410000004002200210000000000112019f000020a7000104300000001f0530018f0000082c06300198000000400200043d0000000004620019000019730000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b0000196f0000c13d000000000005004b000019800000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f000000000014043500000060013002100000082a0020009c0000082a020080410000004002200210000000000121019f000020a70001043000020000000000020000000102000039000000000202041a000000400b00043d000008640300004100000000003b04350000000403b00039000008650400004100000000004304350000082d051001970000002401b000390000000000510435000000000100041400000008022002700000082d02200197000000040020008c0000199c0000c13d0000000003000031000000200030008c00000020040000390000000004034019000019ca0000013d000100000005001d0000082a00b0009c0000082a0300004100000000030b401900000040033002100000082a0010009c0000082a01008041000000c001100210000000000131019f00000871011001c700020000000b001d20a520a00000040f000000020b00002900000060031002700000082a03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b0019000019b80000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b000019b40000c13d000000000006004b000019c50000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f00020000000103550000000100200190000019ef0000613d00000001050000290000001f01400039000000600210018f0000000001b20019000000000021004b000000000200003900000001020040390000086a0010009c000019e20000213d0000000100200190000019e20000c13d000000400010043f0000001f0030008c000019e00000a13d00000000010b0433000000000001004b0000000002000039000000010200c039000000000021004b000019e00000c13d000000000001004b000019e80000613d000000000001042d0000000001000019000020a700010430000008a401000041000000000010043f0000004101000039000000040010043f0000086901000041000020a7000104300000087001000041000000000010043f000000040050043f0000086501000041000000240010043f0000087101000041000020a7000104300000001f0530018f0000082c06300198000000400200043d0000000004620019000019fa0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000019f60000c13d000000000005004b00001a070000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f000000000014043500000060013002100000082a0020009c0000082a020080410000004002200210000000000112019f000020a70001043000020000000000020000000102000039000000000202041a000000400b00043d000008640300004100000000003b04350000000403b00039000008980400004100000000004304350000082d051001970000002401b000390000000000510435000000000100041400000008022002700000082d02200197000000040020008c00001a230000c13d0000000003000031000000200030008c0000002004000039000000000403401900001a510000013d000100000005001d0000082a00b0009c0000082a0300004100000000030b401900000040033002100000082a0010009c0000082a01008041000000c001100210000000000131019f00000871011001c700020000000b001d20a520a00000040f000000020b00002900000060031002700000082a03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b001900001a3f0000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b00001a3b0000c13d000000000006004b00001a4c0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f0002000000010355000000010020019000001a760000613d00000001050000290000001f01400039000000600210018f0000000001b20019000000000021004b000000000200003900000001020040390000086a0010009c00001a690000213d000000010020019000001a690000c13d000000400010043f0000001f0030008c00001a670000a13d00000000010b0433000000000001004b0000000002000039000000010200c039000000000021004b00001a670000c13d000000000001004b00001a6f0000613d000000000001042d0000000001000019000020a700010430000008a401000041000000000010043f0000004101000039000000040010043f0000086901000041000020a7000104300000087001000041000000000010043f000000040050043f0000089801000041000000240010043f0000087101000041000020a7000104300000001f0530018f0000082c06300198000000400200043d000000000462001900001a810000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00001a7d0000c13d000000000005004b00001a8e0000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f000000000014043500000060013002100000082a0020009c0000082a020080410000004002200210000000000112019f000020a7000104300006000000000002000500000003001d000400000002001d0000000102000039000000000202041a000000400b00043d000008670300004100000000003b04350000000404b0003900000868030000410000000000340435000000000400041400000008022002700000082d02200197000000040020008c00001aa90000c13d0000000003000031000000200030008c0000002004000039000000000403401900001ad70000013d000300000001001d0000082a00b0009c0000082a0300004100000000030b401900000040033002100000082a0040009c0000082a04008041000000c001400210000000000131019f00000869011001c700060000000b001d20a520a00000040f000000060b00002900000060031002700000082a03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b001900001ac50000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b00001ac10000c13d000000000006004b00001ad20000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f0002000000010355000000010020019000001dbb0000613d00000003010000290000001f02400039000000600820018f000000000cb8001900000000008c004b000000000200003900000001020040390000086a00c0009c00001da60000213d000000010020019000001da60000c13d0000004000c0043f0000001f0030008c00001da40000a13d00000000020b04330000082d0020009c00001da40000213d0000082d071001970000000204000039000000000404041a0000004405c00039000008ab0600004100000000006504350000002405c00039000600000007001d0000000000750435000008870500004100000000005c04350000000405c0003900000000004504350000000004000414000000040020008c00001b250000613d0000082a00c0009c0000082a0100004100000000010c401900000040011002100000082a0040009c0000082a04008041000000c003400210000000000113019f00000878011001c700030000000c001d20a520a00000040f000000030c00002900000060031002700000082a03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057c001900001b120000613d000000000801034f00000000090c0019000000008a08043c0000000009a90436000000000059004b00001b0e0000c13d000000000006004b00001b1f0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f0002000000010355000000010020019000001dc70000613d0000001f01400039000000600810018f000000000bc800190000086a00b0009c00001da60000213d0000004000b0043f000000200030008c00001da40000413d0000000401b0003900000000020c0433000000000002004b000000200400003900001dad0000c13d0000000102000039000000000202041a000008670500004100000000005b0435000008ad050000410000000000510435000000000100041400000008022002700000082d02200197000000040020008c00001b670000613d0000082a00b0009c0000082a0300004100000000030b401900000040033002100000082a0010009c0000082a01008041000000c001100210000000000131019f00000869011001c700030000000b001d20a520a00000040f000000030b00002900000060031002700000082a03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b001900001b560000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b00001b520000c13d000000000006004b00001b630000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f0002000000010355000000010020019000001dd30000613d0000001f01400039000000600110018f000000000cb100190000086a00c0009c00001da60000213d0000004000c0043f000000200030008c00001da40000413d00000000020b04330000082d0020009c00001da40000213d000008ae0400004100000000004c04350000000404c00039000000060500002900000000005404350000000004000414000000040020008c00001ba80000613d0000082a00c0009c0000082a0100004100000000010c401900000040011002100000082a0040009c0000082a04008041000000c003400210000000000113019f00000869011001c700030000000c001d20a5209b0000040f000000030c00002900000060031002700000082a03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057c001900001b950000613d000000000801034f00000000090c0019000000008a08043c0000000009a90436000000000059004b00001b910000c13d000000000006004b00001ba20000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f0002000000010355000000010020019000001ddf0000613d0000001f01400039000000600110018f000000000bc100190000086a00b0009c00001da60000213d0000004000b0043f000000200030008c00001da40000413d00000000020c0433000300000002001d0000000102000039000000000202041a000008670400004100000000004b04350000000404b0003900000894050000410000000000540435000000000400041400000008022002700000082d02200197000000040020008c00001bea0000613d0000082a00b0009c0000082a0100004100000000010b401900000040011002100000082a0040009c0000082a04008041000000c003400210000000000113019f00000869011001c700020000000b001d20a520a00000040f000000020b00002900000060031002700000082a03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b001900001bd70000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b00001bd30000c13d000000000006004b00001be40000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f0002000000010355000000010020019000001deb0000613d0000001f01400039000000600110018f000000000eb100190000086a00e0009c00001da60000213d0000004000e0043f000000200030008c00001da40000413d00000000020b04330000082d0020009c00001da40000213d0000002404e0003900000060050000390000000000540435000008af0400004100000000004e04350000000404e00039000000060500002900000000005404350000006404e00039000000040500002900000000750504340000000000540435000000200400008a000000000945016f0000001f0850018f0000008406e00039000000000067004b00001c150000813d000000000009004b00001c110000613d000000000b870019000000000a860019000000200aa0008a000000200bb0008a000000000c9a0019000000000d9b0019000000000d0d04330000000000dc0435000000200990008c00001c0b0000c13d000000000008004b00001c2b0000613d000000000a06001900001c210000013d000000000a960019000000000009004b00001c1e0000613d000000000b070019000000000c06001900000000bd0b0434000000000cdc04360000000000ac004b00001c1a0000c13d000000000008004b00001c2b0000613d0000000007970019000000030880021000000000090a043300000000098901cf000000000989022f00000000070704330000010008800089000000000787022f00000000078701cf000000000797019f00000000007a0435000000000765001900000000000704350000001f05500039000000000545016f0000004407e00039000000800850003900000000008704350000000005650019000000050600002900000000760604340000000005650436000000000946016f0000001f0860018f000000000057004b00001c4a0000813d000000000009004b00001c460000613d000000000b870019000000000a850019000000200aa0008a000000200bb0008a000000000c9a0019000000000d9b0019000000000d0d04330000000000dc0435000000200990008c00001c400000c13d000000000008004b00001c600000613d000000000a05001900001c560000013d000000000a950019000000000009004b00001c530000613d000000000b070019000000000c05001900000000bd0b0434000000000cdc04360000000000ac004b00001c4f0000c13d000000000008004b00001c600000613d0000000007970019000000030880021000000000090a043300000000098901cf000000000989022f00000000070704330000010008800089000000000787022f00000000078701cf000000000797019f00000000007a0435000000000756001900000000000704350000000007000414000000040020008c00001c9a0000613d0000001f01600039000000000141016f0000000003e5004900000000011300190000082a0010009c0000082a0100804100000060011002100000082a00e0009c0000082a0300004100000000030e40190000004003300210000000000131019f0000082a0070009c0000082a07008041000000c003700210000000000113019f00050000000e001d20a5209b0000040f000000050e00002900000060031002700000082a03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057e001900001c870000613d000000000801034f00000000090e0019000000008a08043c0000000009a90436000000000059004b00001c830000c13d000000000006004b00001c940000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f0002000000010355000000010020019000001df70000613d0000001f01400039000000600110018f000000000be100190000086a00b0009c00001da60000213d0000004000b0043f000000200030008c00001da40000413d00000000020e0433000500000002001d0000000102000039000000000202041a000008670400004100000000004b04350000000404b0003900000868050000410000000000540435000000000400041400000008022002700000082d02200197000000040020008c00001cdc0000613d0000082a00b0009c0000082a0100004100000000010b401900000040011002100000082a0040009c0000082a04008041000000c003400210000000000113019f00000869011001c700040000000b001d20a520a00000040f000000040b00002900000060031002700000082a03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b001900001cc90000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b00001cc50000c13d000000000006004b00001cd60000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f0002000000010355000000010020019000001e150000613d0000001f01400039000000600110018f0000000001b100190000086a0010009c00001da60000213d000000400010043f000000200030008c00001da40000413d00000000020b04330000082d0020009c00001da40000213d0000000201000039000000000101041a000200000001001d0000086b010000410000000000100443000400000002001d000000040020044300000000010004140000082a0010009c0000082a01008041000000c0011002100000086c011001c7000080020200003920a520a00000040f000000010020019000001dac0000613d000000000101043b000000000001004b000000040300002900001da40000613d000000400b00043d0000006401b00039000000050200002900000000002104350000004401b00039000008930200004100000000002104350000002401b00039000000060200002900000000002104350000086e0100004100000000001b04350000000404b00039000000020100002900000000001404350000000001000414000000040030008c00010000000b001d00001d1f0000613d0000082a00b0009c0000082a0200004100000000020b401900000040022002100000082a0010009c0000082a01008041000000c001100210000000000121019f0000086f011001c70000000002030019000500000004001d20a5209b0000040f0000000504000029000000010b00002900000060031002700000082a0030019d0002000000010355000000010020019000001e210000613d0000086a00b0009c00001da60000213d0000004000b0043f0000000101000039000000000201041a000008670100004100000000001b043500000868010000410000000000140435000000000100041400000008022002700000082d02200197000000040020008c00001d320000c13d0000000003000031000000200030008c0000002004000039000000000403401900001d5d0000013d0000082a00b0009c0000082a0300004100000000030b401900000040033002100000082a0010009c0000082a01008041000000c001100210000000000131019f00000869011001c720a520a00000040f000000010b00002900000060031002700000082a03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b001900001d4c0000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b00001d480000c13d000000000006004b00001d590000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f0002000000010355000000010020019000001e2e0000613d0000001f01400039000000600110018f0000000001b100190000086a0010009c00001da60000213d000000400010043f000000200030008c00001da40000413d00000000020b04330000082d0020009c00001da40000213d0000000201000039000000000101041a000400000001001d0000086b010000410000000000100443000500000002001d000000040020044300000000010004140000082a0010009c0000082a01008041000000c0011002100000086c011001c7000080020200003920a520a00000040f000000010020019000001dac0000613d000000000101043b000000000001004b000000050300002900001da40000613d000000400400043d0000006401400039000000030200002900000000002104350000004401400039000008ab0200004100000000002104350000002401400039000000060200002900000000002104350000086e0100004100000000001404350000000401400039000000040200002900000000002104350000000001000414000000040030008c00001da00000613d0000082a0040009c0000082a02000041000000000204401900000040022002100000082a0010009c0000082a01008041000000c001100210000000000121019f0000086f011001c70000000002030019000600000004001d20a5209b0000040f000000060400002900000060031002700000082a0030019d0002000000010355000000010020019000001e3a0000613d0000086a0040009c00001da60000213d000000400040043f000000000001042d0000000001000019000020a700010430000008a401000041000000000010043f0000004101000039000000040010043f0000086901000041000020a700010430000000000001042f000008860200004100000000002b043500000000004104350000004401b00039000008ac0200004100000000002104350000002401b000390000001a0200003900000000002104350000082a00b0009c0000082a0b0080410000004001b0021000000878011001c7000020a7000104300000001f0530018f0000082c06300198000000400200043d000000000462001900001e460000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00001dc20000c13d00001e460000013d0000001f0530018f0000082c06300198000000400200043d000000000462001900001e460000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00001dce0000c13d00001e460000013d0000001f0530018f0000082c06300198000000400200043d000000000462001900001e020000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00001dda0000c13d00001e020000013d0000001f0530018f0000082c06300198000000400200043d000000000462001900001e020000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00001de60000c13d00001e020000013d0000001f0530018f0000082c06300198000000400200043d000000000462001900001e020000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00001df20000c13d00001e020000013d0000001f0530018f0000082c06300198000000400200043d000000000462001900001e020000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00001dfe0000c13d000000000005004b00001e0f0000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f000000000014043500000060013002100000082a0020009c0000082a020080410000004002200210000000000121019f000020a7000104300000001f0530018f0000082c06300198000000400200043d000000000462001900001e460000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00001e1c0000c13d00001e460000013d0000082a033001970000001f0530018f0000082c06300198000000400200043d000000000462001900001e460000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00001e290000c13d00001e460000013d0000001f0530018f0000082c06300198000000400200043d000000000462001900001e460000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00001e350000c13d00001e460000013d0000082a033001970000001f0530018f0000082c06300198000000400200043d000000000462001900001e460000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00001e420000c13d000000000005004b00001e530000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f000000000014043500000060013002100000082a0020009c0000082a020080410000004002200210000000000112019f000020a7000104300004000000000002000300000002001d000400000001001d0000000101000039000000000201041a000000400b00043d000008670100004100000000001b04350000000401b0003900000868030000410000000000310435000000000100041400000008022002700000082d02200197000000040020008c00001e6e0000c13d0000000003000031000000200030008c0000002004000039000000000403401900001e9a0000013d0000082a00b0009c0000082a0300004100000000030b401900000040033002100000082a0010009c0000082a01008041000000c001100210000000000131019f00000869011001c700020000000b001d20a520a00000040f000000020b00002900000060031002700000082a03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b001900001e890000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b00001e850000c13d000000000006004b00001e960000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f0002000000010355000000010020019000001eef0000613d0000001f01400039000000600210018f0000000001b20019000000000021004b000000000200003900000001020040390000086a0010009c00001ee80000213d000000010020019000001ee80000c13d000000400010043f0000001f0030008c00001ee60000a13d00000000020b04330000082d0020009c00001ee60000213d0000000201000039000000000101041a000100000001001d0000086b010000410000000000100443000200000002001d000000040020044300000000010004140000082a0010009c0000082a01008041000000c0011002100000086c011001c7000080020200003920a520a00000040f000000010020019000001eee0000613d000000000101043b000000000001004b000000020300002900001ee60000613d000000400400043d0000006401400039000000030200002900000000002104350000004401400039000008ab0200004100000000002104350000002401400039000000040200002900000000002104350000086e0100004100000000001404350000000401400039000000010200002900000000002104350000000001000414000000040030008c00001ee20000613d0000082a0040009c0000082a02000041000000000204401900000040022002100000082a0010009c0000082a01008041000000c001100210000000000121019f0000086f011001c70000000002030019000400000004001d20a5209b0000040f000000040400002900000060031002700000082a0030019d0002000000010355000000010020019000001efb0000613d0000086a0040009c00001ee80000213d000000400040043f000000000001042d0000000001000019000020a700010430000008a401000041000000000010043f0000004101000039000000040010043f0000086901000041000020a700010430000000000001042f0000001f0530018f0000082c06300198000000400200043d000000000462001900001f070000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00001ef60000c13d00001f070000013d0000082a033001970000001f0530018f0000082c06300198000000400200043d000000000462001900001f070000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00001f030000c13d000000000005004b00001f140000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f000000000014043500000060013002100000082a0020009c0000082a020080410000004002200210000000000112019f000020a7000104300004000000000002000300000002001d000400000001001d0000000101000039000000000201041a000000400b00043d000008670100004100000000001b04350000000401b0003900000868030000410000000000310435000000000100041400000008022002700000082d02200197000000040020008c00001f2f0000c13d0000000003000031000000200030008c0000002004000039000000000403401900001f5b0000013d0000082a00b0009c0000082a0300004100000000030b401900000040033002100000082a0010009c0000082a01008041000000c001100210000000000131019f00000869011001c700020000000b001d20a520a00000040f000000020b00002900000060031002700000082a03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b001900001f4a0000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b00001f460000c13d000000000006004b00001f570000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f0002000000010355000000010020019000001fb00000613d0000001f01400039000000600210018f0000000001b20019000000000021004b000000000200003900000001020040390000086a0010009c00001fa90000213d000000010020019000001fa90000c13d000000400010043f0000001f0030008c00001fa70000a13d00000000020b04330000082d0020009c00001fa70000213d0000000201000039000000000101041a000100000001001d0000086b010000410000000000100443000200000002001d000000040020044300000000010004140000082a0010009c0000082a01008041000000c0011002100000086c011001c7000080020200003920a520a00000040f000000010020019000001faf0000613d000000000101043b000000000001004b000000020300002900001fa70000613d000000400400043d0000006401400039000000030200002900000000002104350000004401400039000008930200004100000000002104350000002401400039000000040200002900000000002104350000086e0100004100000000001404350000000401400039000000010200002900000000002104350000000001000414000000040030008c00001fa30000613d0000082a0040009c0000082a02000041000000000204401900000040022002100000082a0010009c0000082a01008041000000c001100210000000000121019f0000086f011001c70000000002030019000400000004001d20a5209b0000040f000000040400002900000060031002700000082a0030019d0002000000010355000000010020019000001fbc0000613d0000086a0040009c00001fa90000213d000000400040043f000000000001042d0000000001000019000020a700010430000008a401000041000000000010043f0000004101000039000000040010043f0000086901000041000020a700010430000000000001042f0000001f0530018f0000082c06300198000000400200043d000000000462001900001fc80000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00001fb70000c13d00001fc80000013d0000082a033001970000001f0530018f0000082c06300198000000400200043d000000000462001900001fc80000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00001fc40000c13d000000000005004b00001fd50000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f000000000014043500000060013002100000082a0020009c0000082a020080410000004002200210000000000112019f000020a7000104300003000000000002000300000001001d0000000101000039000000000201041a000000400b00043d000008670100004100000000001b04350000000401b0003900000868030000410000000000310435000000000100041400000008022002700000082d02200197000000040020008c00001fef0000c13d0000000003000031000000200030008c000000200400003900000000040340190000201b0000013d0000082a00b0009c0000082a0300004100000000030b401900000040033002100000082a0010009c0000082a01008041000000c001100210000000000131019f00000869011001c700020000000b001d20a520a00000040f000000020b00002900000060031002700000082a03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b00190000200a0000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b000020060000c13d000000000006004b000020170000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f000200000001035500000001002001900000206f0000613d0000001f01400039000000600210018f0000000001b20019000000000021004b000000000200003900000001020040390000086a0010009c000020680000213d0000000100200190000020680000c13d000000400010043f0000001f0030008c000020660000a13d00000000020b04330000082d0020009c000020660000213d0000000201000039000000000101041a000100000001001d0000086b010000410000000000100443000200000002001d000000040020044300000000010004140000082a0010009c0000082a01008041000000c0011002100000086c011001c7000080020200003920a520a00000040f00000001002001900000206e0000613d000000000101043b000000000001004b0000000203000029000020660000613d000000400400043d0000006401400039000000030200002900000000002104350000004401400039000008aa0200004100000000002104350000086e010000410000000000140435000000040140003900000001020000290000000000210435000000240140003900000000000104350000000001000414000000040030008c000020620000613d0000082a0040009c0000082a02000041000000000204401900000040022002100000082a0010009c0000082a01008041000000c001100210000000000121019f0000086f011001c70000000002030019000300000004001d20a5209b0000040f000000030400002900000060031002700000082a0030019d000200000001035500000001002001900000207b0000613d0000086a0040009c000020680000213d000000400040043f000000000001042d0000000001000019000020a700010430000008a401000041000000000010043f0000004101000039000000040010043f0000086901000041000020a700010430000000000001042f0000001f0530018f0000082c06300198000000400200043d0000000004620019000020870000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000020760000c13d000020870000013d0000082a033001970000001f0530018f0000082c06300198000000400200043d0000000004620019000020870000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000020830000c13d000000000005004b000020940000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f000000000014043500000060013002100000082a0020009c0000082a020080410000004002200210000000000112019f000020a700010430000000000001042f0000209e002104210000000102000039000000000001042d0000000002000019000000000001042d000020a3002104230000000102000039000000000001042d0000000002000019000000000001042d000020a500000432000020a60001042e000020a70001043000000000000000000000000000000000000000000000000000000000ffffffff00000000000000000000000000000000000000000000000000000001ffffffe000000000000000000000000000000000000000000000000000000000ffffffe0000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffff0021ca133936d4563655fffbb8a80562871d737bffbe741fdcca6f8efef7a2463700000002000000000000000000000000000000400000010000000000000000000000000000000000000000000000000000000000000000000000000073db153d00000000000000000000000000000000000000000000000000000000a16ad7d900000000000000000000000000000000000000000000000000000000ce62bc8b00000000000000000000000000000000000000000000000000000000ed022ebc00000000000000000000000000000000000000000000000000000000ed022ebd00000000000000000000000000000000000000000000000000000000f4a0a52800000000000000000000000000000000000000000000000000000000f7d9757700000000000000000000000000000000000000000000000000000000ce62bc8c00000000000000000000000000000000000000000000000000000000dd898b2f00000000000000000000000000000000000000000000000000000000b76ac0d600000000000000000000000000000000000000000000000000000000b76ac0d700000000000000000000000000000000000000000000000000000000c03ad0be00000000000000000000000000000000000000000000000000000000a16ad7da00000000000000000000000000000000000000000000000000000000a485b4cf000000000000000000000000000000000000000000000000000000008245e4710000000000000000000000000000000000000000000000000000000085ed15890000000000000000000000000000000000000000000000000000000085ed158a0000000000000000000000000000000000000000000000000000000088e4f1cb000000000000000000000000000000000000000000000000000000008da5cb5b000000000000000000000000000000000000000000000000000000008245e4720000000000000000000000000000000000000000000000000000000082840eed00000000000000000000000000000000000000000000000000000000783957ad00000000000000000000000000000000000000000000000000000000783957ae000000000000000000000000000000000000000000000000000000008129fc1c0000000000000000000000000000000000000000000000000000000073db153e0000000000000000000000000000000000000000000000000000000077278ae8000000000000000000000000000000000000000000000000000000002fb0b873000000000000000000000000000000000000000000000000000000005d1ca630000000000000000000000000000000000000000000000000000000006817c76b000000000000000000000000000000000000000000000000000000006817c76c000000000000000000000000000000000000000000000000000000006b207561000000000000000000000000000000000000000000000000000000006ef4d8b9000000000000000000000000000000000000000000000000000000005d1ca63100000000000000000000000000000000000000000000000000000000676d3d4f000000000000000000000000000000000000000000000000000000003d156f62000000000000000000000000000000000000000000000000000000003d156f63000000000000000000000000000000000000000000000000000000005c975abb000000000000000000000000000000000000000000000000000000002fb0b874000000000000000000000000000000000000000000000000000000003ccfd60b000000000000000000000000000000000000000000000000000000001328357e0000000000000000000000000000000000000000000000000000000016c38b3b0000000000000000000000000000000000000000000000000000000016c38b3c00000000000000000000000000000000000000000000000000000000267659e2000000000000000000000000000000000000000000000000000000001328357f0000000000000000000000000000000000000000000000000000000015be71ff0000000000000000000000000000000000000000000000000000000002533419000000000000000000000000000000000000000000000000000000000253341a0000000000000000000000000000000000000000000000000000000006fdde03000000000000000000000000000000000000000000000000000000000035a9ae0000000000000000000000000000000000000000000000000000000001ffc9a7c36dd7ea00000000000000000000000000000000000000000000000000000000241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b08000000000000000000000000000000000000004400000080000000000000000053e41c1e000000000000000000000000000000000000000000000000000000009750ad73d9615445751d3fd0a61d867ae6a6dd1dfb5f65ef07fe835b7d5ca6bd0000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff1806aa1896bbf26568e884a7374b41e002500962caba6a15023a8d90e8508b83020000020000000000000000000000000000002400000000000000000000000050fc4a86286314eb3aa17200f6e9ba0d1cda18b0acbfb54e6d9dd307e46c2d289b29de690000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000840000000000000000000000000161a64a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000440000000000000000000000000000000000000000000000000000000000000020000000800000000000000000ffffffffffffffffffffff0000000000000000000000000000000000000000ffa4b9148100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000240000008000000000000000008a4bcc900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000640000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800000000000000000000000000000000000000000000000000000000000000007fef633000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000bfa2ccd2000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0651689700000000000000000000000000000000000000000000000000000000007b920aa00000000000000000000000000000000000000000000000000000000e81b22ea0000000000000000000000000000000000000000000000000000000002016836a56b71f0d02689e69e326f4f4c1b9057164ef592671cf0d37c8040c0000000000000000000000000000000000000000000000000ffffffffffffff7f5c975abb000000000000000000000000000000000000000000000000000000005061757361626c653a207061757365640000000000000000000000000000000008c379a000000000000000000000000000000000000000000000000000000000a1b9224c00000000000000000000000000000000000000000000000000000000a6ece734f20310c441daec80768668ffd0649e14bbd0ab181cf9ad511b7e60def5298aca000000000000000000000000000000000000000000000000000000004e6f2072656465656d61626c6520746f6b656e20736574000000000000000000fc425f2263d0df187444b70e47283d622c70181c5baebb1306a01edba1ce184c4163636f756e7453797374656d000000000000000000000000000000000000000dc149f000000000000000000000000000000000000000000000000000000000421683f821a0574472445355be6d2b769119e8515f8376a1d7878523dfdecf7b0a41b90f000000000000000000000000000000000000000000000000000000002361458367e696363fbcc70777d07ebbd2394e89fd0adcaf147faccd1d294d60e95c048700000000000000000000000000000000000000000000000000000000a709fd3aa96d9faf770e44a5aef2f4808a6fe3a5ddf546568f36ad3a3873f31d948bc8ac37788722a5685eaf06860185e744e8f40d83c43fc7db309246ec652eb31775265933e5e6f3b2d519a9dcdfa71b65581e94932ab3a3e5108d0bd44c346352211e0000000000000000000000000000000000000000000000000000000067652074686520757365726e616d6500000000000000000000000000000000004f776e6572206f662074686520746f6b656e2063616e206f6e6c79206368616ed3dc2a3a14cbd0cdbf3069fc3927e48506f271b9dda2c21625b93e6a99d3eb5302000000000000000000000000000000000000000000000000000000000000004661696c656420746f2072657475726e20657863657373204554480000000000496e73756666696369656e74207061796d656e740000000000000000000000004d696e74207072696365206e6f742073657400000000000000000000000000009cc7f708afc65944829bd487b90b72536b1951864fbfc14e125fc972a6507f395472616e73666572206661696c6564000000000000000000000000000000000065d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a020000000000000000000000000000000000002000000000000000000000000062e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2585db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa5061757361626c653a206e6f74207061757365640000000000000000000000004e487b710000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff01ffc9a70000000000000000000000000000000000000000000000000000000084515dcc00000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000ecd9e25c81c684765cec4b6e84c99a71427b6f86b89fb7723e47f99327ee572b23682036ee8d01f58fb6bbb8051f4908212c4e08722c71ee4815f984f4ef0055573657220616c7265616479206861732061206163636f756e74000000000000b0cb9d5bac7bb96102c1a0cec12a57e96e86034b9716b99ca2ed9d81e61bb9db6a62784200000000000000000000000000000000000000000000000000000000924ca90700000000000000000000000000000000000000000000000000000000da35bfc80b92d85c9eff4f1f33a02ceb5991ffb62cbc7a09a2763818a5bd7551
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000074eb92b33f2400eb14f6d6725b14f76078d5e731
-----Decoded View---------------
Arg [0] : gameRegistryAddress (address): 0x74eb92b33f2400EB14F6D6725B14F76078d5E731
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000074eb92b33f2400eb14f6d6725b14f76078d5e731
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 31 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.