Abstract Testnet

Contract

0x1b2abed6BAb71c0F672ACd3994e6C0B3fA6687a9

Overview

ETH Balance

0 ETH

Multichain Info

N/A
Transaction Hash
Method
Block
From
To

There are no matching entries

1 Internal Transaction found.

Latest 1 internal transaction

Parent Transaction Hash Block From To
40673052025-01-11 22:17:206 days ago1736633840  Contract Creation0 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
DataStore

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)

File 1 of 9 : DataStore.sol
// 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(""));
    }
}

File 2 of 9 : DataTypes.sol
// 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;
    }
}

File 3 of 9 : IDataStore.sol
// 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);
}

File 4 of 9 : GameRegistryConsumer.sol
// SPDX-License-Identifier: MIT LICENSE

pragma solidity ^0.8.13;

import {ReentrancyGuard} from "@openzeppelin/contracts/utils/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;
    }

}

File 5 of 9 : RoleConstants.sol
// 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");

File 6 of 9 : ReentrancyGuard.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.1.0) (utils/ReentrancyGuard.sol)

pragma solidity ^0.8.20;

/**
 * @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 EIP-1153 (transient storage) is available on the chain you're deploying at,
 * consider using {ReentrancyGuardTransient} instead.
 *
 * 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;

    /**
     * @dev Unauthorized reentrant call.
     */
    error ReentrancyGuardReentrantCall();

    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
        if (_status == ENTERED) {
            revert ReentrancyGuardReentrantCall();
        }

        // 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;
    }

    /**
     * @dev Returns true if the reentrancy guard is currently set to "entered", which indicates there is a
     * `nonReentrant` function in the call stack.
     */
    function _reentrancyGuardEntered() internal view returns (bool) {
        return _status == ENTERED;
    }
}

File 7 of 9 : ISystem.sol
// 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;
}

File 8 of 9 : IGameRegistry.sol
// 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);
}

File 9 of 9 : IERC165.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.1.0) (utils/introspection/IERC165.sol)

pragma solidity ^0.8.20;

/**
 * @dev Interface of the ERC-165 standard, as defined in the
 * https://eips.ethereum.org/EIPS/eip-165[ERC].
 *
 * 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[ERC 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);
}

Settings
{
  "viaIR": false,
  "codegen": "yul",
  "remappings": [
    "@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/",
    "@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/",
    "erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/",
    "forge-std/=lib/forge-std/src/",
    "forge-zksync-std/=lib/forge-zksync-std/src/",
    "halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/",
    "openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/",
    "openzeppelin-contracts/=lib/openzeppelin-contracts/"
  ],
  "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 ABI

[{"inputs":[{"internalType":"address","name":"gameRegistryAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"InvalidGameRegistry","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"expectedRole","type":"bytes32"}],"name":"MissingRole","type":"error"},{"inputs":[],"name":"ReentrancyGuardReentrantCall","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"tableId","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"docId","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"colId","type":"uint256"},{"indexed":false,"internalType":"bytes32[]","name":"value","type":"bytes32[]"}],"name":"ArrayValueSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"colId","type":"uint256"},{"indexed":false,"internalType":"enum IDataStore.ColumnType","name":"columnType","type":"uint8"}],"name":"ColumnTypeSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"tableId","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"docId","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"colId","type":"uint256"},{"indexed":false,"internalType":"string","name":"value","type":"string"}],"name":"StringValueSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"tableId","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"docId","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"colId","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"value","type":"bytes32"}],"name":"ValueSet","type":"event"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"arrayStore","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"columnTypes","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"datastore","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tableId","type":"uint256"},{"internalType":"uint256","name":"docId","type":"uint256"},{"internalType":"uint256","name":"colId","type":"uint256"}],"name":"deleteValue","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"docId","type":"uint256"},{"internalType":"uint256","name":"colId","type":"uint256"}],"name":"generateArrayKey","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"docId","type":"uint256"},{"internalType":"uint256","name":"colId","type":"uint256"}],"name":"generateKey","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"tableId","type":"uint256"},{"internalType":"uint256","name":"docId","type":"uint256"},{"internalType":"uint256","name":"colId","type":"uint256"}],"name":"getAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tableId","type":"uint256"},{"internalType":"uint256","name":"docId","type":"uint256"},{"internalType":"uint256","name":"colId","type":"uint256"}],"name":"getAddressArray","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tableId","type":"uint256"},{"internalType":"uint256","name":"docId","type":"uint256"},{"internalType":"uint256","name":"colId","type":"uint256"}],"name":"getBool","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tableId","type":"uint256"},{"internalType":"uint256","name":"docId","type":"uint256"},{"internalType":"uint256","name":"colId","type":"uint256"}],"name":"getBoolArray","outputs":[{"internalType":"bool[]","name":"","type":"bool[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tableId","type":"uint256"},{"internalType":"uint256","name":"docId","type":"uint256"},{"internalType":"uint256","name":"colId","type":"uint256"}],"name":"getBytes32","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"colId","type":"uint256"}],"name":"getColumnType","outputs":[{"internalType":"enum IDataStore.ColumnType","name":"","type":"uint8"}],"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":"uint256","name":"tableId","type":"uint256"},{"internalType":"uint256","name":"docId","type":"uint256"},{"internalType":"uint256","name":"colId","type":"uint256"}],"name":"getInt256","outputs":[{"internalType":"int256","name":"","type":"int256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tableId","type":"uint256"},{"internalType":"uint256","name":"docId","type":"uint256"},{"internalType":"uint256","name":"colId","type":"uint256"}],"name":"getString","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tableId","type":"uint256"},{"internalType":"uint256","name":"docId","type":"uint256"},{"internalType":"uint256","name":"colId","type":"uint256"}],"name":"getUint256","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tableId","type":"uint256"},{"internalType":"uint256","name":"docId","type":"uint256"},{"internalType":"uint256","name":"colId","type":"uint256"}],"name":"getUint256Array","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tableId","type":"uint256"},{"internalType":"uint256","name":"docId","type":"uint256"},{"internalType":"uint256","name":"colId","type":"uint256"}],"name":"getValue","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tableId","type":"uint256"},{"internalType":"uint256","name":"docId","type":"uint256"},{"internalType":"uint256","name":"colId","type":"uint256"}],"name":"hasStringValue","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tableId","type":"uint256"},{"internalType":"uint256","name":"docId","type":"uint256"},{"internalType":"uint256","name":"colId","type":"uint256"}],"name":"hasValue","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"colId","type":"uint256"}],"name":"isColumnTypeSet","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tableId","type":"uint256"},{"internalType":"uint256","name":"docId","type":"uint256"},{"internalType":"uint256","name":"colId","type":"uint256"},{"internalType":"address","name":"value","type":"address"}],"name":"setAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tableId","type":"uint256"},{"internalType":"uint256","name":"docId","type":"uint256"},{"internalType":"uint256","name":"colId","type":"uint256"},{"internalType":"address[]","name":"value","type":"address[]"}],"name":"setAddressArrayValue","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tableId","type":"uint256"},{"internalType":"uint256","name":"docId","type":"uint256"},{"internalType":"uint256","name":"colId","type":"uint256"},{"internalType":"bytes32[]","name":"value","type":"bytes32[]"}],"name":"setArrayValue","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tableId","type":"uint256"},{"internalType":"uint256","name":"docId","type":"uint256"},{"internalType":"uint256","name":"colId","type":"uint256"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setBool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tableId","type":"uint256"},{"internalType":"uint256","name":"docId","type":"uint256"},{"internalType":"uint256","name":"colId","type":"uint256"},{"internalType":"bool[]","name":"value","type":"bool[]"}],"name":"setBoolArrayValue","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tableId","type":"uint256"},{"internalType":"uint256","name":"docId","type":"uint256"},{"internalType":"uint256","name":"colId","type":"uint256"},{"internalType":"bytes32","name":"value","type":"bytes32"}],"name":"setBytes32","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"colId","type":"uint256"},{"internalType":"enum IDataStore.ColumnType","name":"columnType","type":"uint8"}],"name":"setColumnType","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"gameRegistryAddress","type":"address"}],"name":"setGameRegistry","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tableId","type":"uint256"},{"internalType":"uint256","name":"docId","type":"uint256"},{"internalType":"uint256","name":"colId","type":"uint256"},{"internalType":"int256","name":"value","type":"int256"}],"name":"setInt256","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"shouldPause","type":"bool"}],"name":"setPaused","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tableId","type":"uint256"},{"internalType":"uint256","name":"docId","type":"uint256"},{"internalType":"uint256","name":"colId","type":"uint256"},{"internalType":"string","name":"value","type":"string"}],"name":"setString","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tableId","type":"uint256"},{"internalType":"uint256","name":"docId","type":"uint256"},{"internalType":"uint256","name":"colId","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"setUint256","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tableId","type":"uint256"},{"internalType":"uint256","name":"docId","type":"uint256"},{"internalType":"uint256","name":"colId","type":"uint256"},{"internalType":"uint256[]","name":"value","type":"uint256[]"}],"name":"setUint256ArrayValue","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tableId","type":"uint256"},{"internalType":"uint256","name":"docId","type":"uint256"},{"internalType":"uint256","name":"colId","type":"uint256"},{"internalType":"bytes32","name":"value","type":"bytes32"}],"name":"setValue","outputs":[],"stateMutability":"nonpayable","type":"function"}]

9c4d535b0000000000000000000000000000000000000000000000000000000000000000010006cd4c899c1d302da5a3e18ad9f582235d14fc0a3d9d2cdfde585126ef6a00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000020000000000000000000000000487f346df1bcaca0366d4841d71941b46c863593

Deployed Bytecode

0x00030000000000020008000000000002000200000001035500000060031002700000065b0030019d0000065b0330019700000001002001900000002f0000c13d0000008002000039000000400020043f000000040030008c000000520000413d000000000201043b000000e002200270000006630020009c000000540000213d0000067e0020009c000000840000a13d0000067f0020009c000001060000213d000006860020009c000002360000a13d000006870020009c000006700000613d000006880020009c000004a10000613d000006890020009c000000520000c13d0000000001000416000000000001004b000000520000c13d0000000102000039000000000302041a000000ff00300190000007ec0000c13d000006b901000041000000800010043f000000000100041400000008023002700000065e02200197000000040020008c000009550000c13d0000000103000031000000200030008c00000020040000390000000004034019000009790000013d0000000002000416000000000002004b000000520000c13d0000001f023000390000065c022001970000008002200039000000400020043f0000001f0430018f0000065d053001980000008002500039000000400000613d0000008006000039000000000701034f000000007807043c0000000006860436000000000026004b0000003c0000c13d000000000004004b0000004d0000613d000000000151034f0000000304400210000000000502043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f0000000000120435000000200030008c000000520000413d000000800100043d0000065e0010009c0000007c0000a13d00000000010000190000196900010430000006640020009c000000b30000a13d000006650020009c000001340000213d0000066c0020009c000002410000a13d0000066d0020009c000006770000613d0000066e0020009c000004ec0000613d0000066f0020009c000000520000c13d000000240030008c000000520000413d0000000002000416000000000002004b000000520000c13d0000000401100370000000000101043b000800000001001d0000065e0010009c000000520000213d0000000101000039000000000201041a0000069801000041000000800010043f000006ac01000041000000840010043f0000000001000411000000a40010043f000000000100041400000008022002700000065e02200197000000040020008c00000a840000c13d0000000103000031000000200030008c0000002004000039000000000403401900000aa80000013d0000000102000039000000000020041b000000000001004b000001660000c13d000006ae01000041000000000010043f000006af0100004100001969000104300000068c0020009c000001750000a13d0000068d0020009c000001e40000a13d0000068e0020009c000007430000613d0000068f0020009c000004050000613d000006900020009c000000520000c13d000000840030008c000000520000413d0000000002000416000000000002004b000000520000c13d0000006402100370000000000202043b000400000002001d0000004402100370000000000202043b000700000002001d0000002402100370000000000202043b000500000002001d0000000401100370000000000101043b000600000001001d0000000101000039000000000201041a0000069801000041000000800010043f0000069901000041000000840010043f00000000010004110000065e01100197000800000001001d000000a40010043f000000000100041400000008022002700000065e02200197000000040020008c000007f20000c13d0000000103000031000000200030008c00000020040000390000000004034019000008160000013d000006720020009c000001940000a13d000006730020009c0000020d0000a13d000006740020009c000007620000613d000006750020009c0000041b0000613d000006760020009c000000520000c13d000000840030008c000000520000413d0000000002000416000000000002004b000000520000c13d0000004402100370000000000202043b000800000002001d0000002402100370000000000202043b000600000002001d0000000402100370000000000202043b000700000002001d0000006402100370000000000202043b0000069d0020009c000000520000213d0000002304200039000000000034004b000000520000813d0000000404200039000000000441034f000000000504043b0000069d0050009c000005590000213d00000005045002100000003f06400039000006b006600197000006a50060009c000005590000213d0000008006600039000500000006001d000000400060043f000000800050043f00000024022000390000000004240019000000000034004b000000520000213d000000000005004b000000ef0000613d000000a003000039000000000521034f000000000505043b00000000035304360000002002200039000000000042004b000000e70000413d000000400100043d000500000001001d0000000101000039000000000201041a00000698010000410000000504000029000000000014043500000004014000390000069903000041000000000031043500000000010004110000065e031001970000002401400039000400000003001d0000000000310435000000000100041400000008022002700000065e02200197000000040020008c00000caf0000c13d0000000103000031000000200030008c0000002004000039000000000403401900000cd90000013d000006800020009c0000024f0000a13d000006810020009c0000078c0000613d000006820020009c0000053a0000613d000006830020009c000000520000c13d000000640030008c000000520000413d0000000002000416000000000002004b000000520000c13d0000002402100370000000000202043b000800000002001d0000000402100370000000000202043b000700000002001d0000004401100370000000000101043b000600000001001d000000000010043f0000000601000039000000200010043f00000000010004140000065b0010009c0000065b01008041000000c0011002100000069b011001c70000801002000039196719620000040f0000000100200190000000520000613d000000000101043b000000000101041a000000000001004b000007aa0000613d000000ff0110018f000000070010008c00000afb0000213d000000020010008c00000000010000390000000101006039196718160000040f000007870000013d000006660020009c000002780000a13d000006670020009c000007bb0000613d000006680020009c0000055f0000613d000006690020009c000000520000c13d000000840030008c000000520000413d0000000002000416000000000002004b000000520000c13d0000004402100370000000000202043b000800000002001d0000002402100370000000000202043b000600000002001d0000000402100370000000000202043b000700000002001d0000006401100370000000000201043b000000000002004b0000000001000039000000010100c039000500000002001d000000000012004b000000520000c13d0000000101000039000000000201041a0000069801000041000000800010043f0000069901000041000000840010043f00000000010004110000065e01100197000400000001001d000000a40010043f000000000100041400000008022002700000065e02200197000000040020008c00000abe0000c13d0000000103000031000000200030008c0000002004000039000000000403401900000ae20000013d000000000302041a0000065f0330019700000008011002100000066001100197000000000131019f00000001011001bf000000000012041b00000661010000410000000202000039000000000012041b0000002001000039000001000010044300000120000004430000066201000041000019680001042e000006930020009c000001ae0000213d000006960020009c000002d60000613d000006970020009c000000520000c13d0000000001000416000000000001004b000000520000c13d0000000001030019196716ce0000040f000800000001001d00000000010200190000000002030019196717f00000040f0000000802000029000000000020043f0000000302000039000000200020043f000800000001001d00000040020000390000000001000019196719480000040f0000000802000029000000000020043f000000200010043f00000000010000190000004002000039196719480000040f000000000101041a0000024d0000013d000006790020009c000001d90000213d0000067c0020009c000002f70000613d0000067d0020009c000000520000c13d0000000001000416000000000001004b000000520000c13d0000000001030019196716e60000040f000800000002001d000000000010043f0000000301000039000000200010043f00000040020000390000000001000019196719480000040f0000000802000029000000000020043f000000200010043f00000000010000190000004002000039196719480000040f000000000101041a00000b9c0000013d000006940020009c000003c20000613d000006950020009c000000520000c13d000000840030008c000000520000413d0000000002000416000000000002004b000000520000c13d0000004402100370000000000202043b000800000002001d0000002402100370000000000202043b000600000002001d0000000402100370000000000202043b000700000002001d0000006401100370000000000101043b000500000001001d0000065e0010009c000000520000213d0000000101000039000000000201041a0000069801000041000000800010043f0000069901000041000000840010043f00000000010004110000065e01100197000400000001001d000000a40010043f000000000100041400000008022002700000065e02200197000000040020008c000009860000c13d0000000103000031000000200030008c00000020040000390000000004034019000009aa0000013d0000067a0020009c000003f00000613d0000067b0020009c000000520000c13d0000000001000416000000000001004b000000520000c13d0000000001030019196716ce0000040f1967183e0000040f00000b9c0000013d000006910020009c000004410000613d000006920020009c000000520000c13d000000840030008c000000520000413d0000000002000416000000000002004b000000520000c13d0000006402100370000000000202043b000400000002001d0000004402100370000000000202043b000600000002001d0000002402100370000000000202043b000500000002001d0000000401100370000000000101043b000800000001001d0000000101000039000000000201041a0000069801000041000000800010043f0000069901000041000000840010043f00000000010004110000065e01100197000700000001001d000000a40010043f000000000100041400000008022002700000065e02200197000000040020008c000008510000c13d0000000103000031000000200030008c00000020040000390000000004034019000008750000013d000006770020009c0000045f0000613d000006780020009c000000520000c13d000000840030008c000000520000413d0000000002000416000000000002004b000000520000c13d0000006402100370000000000202043b000400000002001d0000004402100370000000000202043b000700000002001d0000002402100370000000000202043b000500000002001d0000000401100370000000000101043b000600000001001d0000000101000039000000000201041a0000069801000041000000800010043f0000069901000041000000840010043f00000000010004110000065e01100197000800000001001d000000a40010043f000000000100041400000008022002700000065e02200197000000040020008c000008870000c13d0000000103000031000000200030008c00000020040000390000000004034019000008ab0000013d0000068a0020009c000005690000613d0000068b0020009c000000520000c13d0000000001000416000000000001004b000000520000c13d0000000001030019196716e60000040f196717c70000040f00000b9c0000013d000006700020009c000005770000613d000006710020009c000000520000c13d000000240030008c000000520000413d0000000002000416000000000002004b000000520000c13d0000000401100370000000000101043b196718ae0000040f000000000001004b000003ed0000013d000006840020009c0000063d0000613d000006850020009c000000520000c13d000000840030008c000000520000413d0000000002000416000000000002004b000000520000c13d0000006402100370000000000302043b0000004402100370000000000202043b000700000002001d0000002402100370000000000202043b000500000002001d0000000401100370000000000101043b000600000001001d0000000101000039000000000201041a0000069801000041000000800010043f0000069901000041000000840010043f00000000010004110000065e01100197000800000001001d000000a40010043f000000000100041400000008022002700000065e02200197000000040020008c000400000003001d0000091f0000c13d0000000103000031000000200030008c00000020040000390000000004034019000009430000013d0000066a0020009c000006450000613d0000066b0020009c000000520000c13d000000840030008c000000520000413d0000000002000416000000000002004b000000520000c13d0000004402100370000000000202043b000800000002001d0000002402100370000000000202043b000700000002001d0000000402100370000000000202043b000600000002001d0000006402100370000000000402043b0000069d0040009c000000520000213d0000002302400039000000000032004b000000520000813d0000000405400039000000000251034f000000000202043b0000069d0020009c000005590000213d0000001f06200039000006c5066001970000003f06600039000006c506600197000006a50060009c000005590000213d0000008006600039000000400060043f000000800020043f00000000042400190000002404400039000000000034004b000000520000213d0000002003500039000000000331034f000006c5042001980000001f0520018f000000a001400039000002af0000613d000000a006000039000000000703034f000000007807043c0000000006860436000000000016004b000002ab0000c13d000000000005004b000002bc0000613d000000000343034f0000000304500210000000000501043300000000054501cf000000000545022f000000000303043b0000010004400089000000000343022f00000000034301cf000000000353019f0000000000310435000000a00120003900000000000104350000000101000039000000000201041a000000400400043d0000069801000041000000000014043500000004014000390000069903000041000000000031043500000000010004110000065e03100197000500000004001d0000002401400039000400000003001d0000000000310435000000000100041400000008022002700000065e02200197000000040020008c00000d4d0000c13d0000000103000031000000200030008c0000002004000039000000000403401900000d760000013d000000440030008c000000520000413d0000000002000416000000000002004b000000520000c13d0000000402100370000000000202043b000800000002001d0000002401100370000000000101043b000700000001001d000000070010008c000000520000213d0000000101000039000000000201041a0000069801000041000000800010043f0000069901000041000000840010043f00000000010004110000065e01100197000600000001001d000000a40010043f000000000100041400000008022002700000065e02200197000000040020008c000009e40000c13d0000000103000031000000200030008c0000002004000039000000000403401900000a080000013d000000640030008c000000520000413d0000000002000416000000000002004b000000520000c13d0000002402100370000000000202043b000700000002001d0000000402100370000000000202043b000800000002001d0000004401100370000000000101043b000600000001001d000000000010043f0000000601000039000000200010043f00000000010004140000065b0010009c0000065b01008041000000c0011002100000069b011001c70000801002000039196719620000040f0000000100200190000000520000613d000000000101043b000000000101041a000000000001004b000007aa0000613d000000ff0110018f000000070010008c00000afb0000213d000000030010008c00000ca80000c13d0000000801000029000000000010043f0000000401000039000000200010043f00000000010004140000065b0010009c0000065b01008041000000c0011002100000069b011001c70000801002000039196719620000040f0000000100200190000000520000613d000000000101043b000800000001001d000000400100043d0000006002100039000006b203000041000000000032043500000040021000390000000603000029000000000032043500000020021000390000000703000029000000000032043500000047030000390000000000310435000006a50010009c000005590000213d0000008003100039000000400030043f0000065b0020009c0000065b02008041000000400220021000000000010104330000065b0010009c0000065b010080410000006001100210000000000121019f00000000020004140000065b0020009c0000065b02008041000000c002200210000000000112019f0000069f011001c70000801002000039196719620000040f0000000100200190000000520000613d000000000101043b000000000010043f0000000801000029000000200010043f00000000010004140000065b0010009c0000065b01008041000000c0011002100000069b011001c70000801002000039196719620000040f0000000100200190000000520000613d000000000101043b000000000301041a000000400200043d000800000002001d000600000003001d0000000002320436000700000002001d000000000010043f00000000010004140000065b0010009c0000065b01008041000000c001100210000006a0011001c70000801002000039196719620000040f0000000100200190000000520000613d0000000605000029000000000005004b0000000702000029000003760000613d000000000101043b00000000030000190000000702000029000000000401041a000000000242043600000001011000390000000103300039000000000053004b000003700000413d000000080120006a0000001f01100039000006c5011001970000000802100029000000000012004b000000000100003900000001010040390000069d0020009c000005590000213d0000000100100190000005590000c13d000000400020043f000000080100002900000000010104330000069d0010009c000005590000213d00000005041002100000003f03400039000006b00330019700000000032300190000069d0030009c000005590000213d000000400030043f00000000011204360000001f0340018f000000000004004b000003990000613d0000000004410019000000000500003100000002055003670000000006010019000000005705043c0000000006760436000000000046004b000003950000c13d000000000003004b00000008060000290000000003060433000000000003004b0000000707000029000003af0000613d00000000030000190000000004020433000000000034004b000013730000a13d0000000504300210000000000514001900000000047400190000000004040433000000010040008c00000000040000390000000104006039000000000045043500000001033000390000000004060433000000000043004b000003a00000413d000000400300043d00000020040000390000000005430436000000000402043300000000004504350000004002300039000000000004004b000003c00000613d00000000050000190000000016010434000000000006004b0000000006000039000000010600c03900000000026204360000000105500039000000000045004b000003b80000413d00000000013200490000073b0000013d0000000001000416000000000001004b000000520000c13d0000000001030019196716ce0000040f000800000001001d00000000010200190000000002030019196717f00000040f0000000802000029000000000020043f0000000502000039000000200020043f000800000001001d00000040020000390000000001000019196719480000040f0000000802000029000000000020043f000000200010043f00000000010000190000004002000039196719480000040f000000400200043d000800000002001d196717390000040f000000080210006a0000000801000029196716f20000040f00000008010000290000000012010434196719480000040f000800000001001d000000400100043d000700000001001d0000002002000039196716f20000040f0000000701000029000000000001043500000000010000190000000002000019196719480000040f000000080010006b0000000001000039000000010100c03900000b9c0000013d0000000001000416000000000001004b000000520000c13d0000000101000039000000000201041a0000069801000041000000800010043f000006b601000041000000840010043f0000000001000411000000a40010043f000000000100041400000008022002700000065e02200197000000040020008c000008e50000c13d0000000103000031000000200030008c00000020040000390000000004034019000009090000013d000000240030008c000000520000413d0000000002000416000000000002004b000000520000c13d0000000401100370000000000101043b196717860000040f0000000002010019000000400100043d000800000001001d196716dc0000040f000000080200002900000000012100490000065b0010009c0000065b0100804100000060011002100000065b0020009c0000065b020080410000004002200210000000000121019f000019680001042e000000640030008c000000520000413d0000000002000416000000000002004b000000520000c13d0000002402100370000000000202043b000800000002001d0000000402100370000000000202043b000700000002001d0000004401100370000000000101043b000600000001001d000000000010043f0000000601000039000000200010043f00000000010004140000065b0010009c0000065b01008041000000c0011002100000069b011001c70000801002000039196719620000040f0000000100200190000000520000613d000000000101043b000000000101041a000000000001004b000007aa0000613d000000ff0110018f000000070010008c00000afb0000213d000000050010008c00000000010000390000000101006039196717b30000040f000007870000013d0000000001000416000000000001004b000000520000c13d0000000001030019196716ce0000040f000800000001001d000700000002001d000600000003001d0000000001000411196718c20000040f00000007010000290000000602000029196717f00000040f0000000802000029000000000020043f0000000302000039000000200020043f000800000001001d00000040020000390000000001000019196719480000040f0000000802000029000000000020043f000000200010043f00000000010000190000004002000039196719480000040f000000000001041b0000000001000019000019680001042e000000640030008c000000520000413d0000000002000416000000000002004b000000520000c13d0000002402100370000000000202043b000700000002001d0000000402100370000000000202043b000800000002001d0000004401100370000000000101043b000600000001001d000000000010043f0000000601000039000000200010043f00000000010004140000065b0010009c0000065b01008041000000c0011002100000069b011001c70000801002000039196719620000040f0000000100200190000000520000613d000000000101043b000000000101041a000000000001004b000007aa0000613d000000ff0110018f000000070010008c00000afb0000213d000000060010008c00000000010000390000000101006039196718860000040f00000007010000290000000602000029196717f00000040f0000000802000029000000000020043f0000000502000039000000200020043f000800000001001d00000040020000390000000001000019196719480000040f0000000802000029000000000020043f000000200010043f00000000010000190000004002000039196719480000040f000000400200043d000800000002001d196717390000040f000000080210006a0000000801000029196716f20000040f000000400100043d000700000001001d0000000802000029196717040000040f0000000702000029000004120000013d000000840030008c000000520000413d0000000002000416000000000002004b000000520000c13d0000004402100370000000000202043b000800000002001d0000002402100370000000000202043b000600000002001d0000000402100370000000000202043b000700000002001d0000006402100370000000000202043b0000069d0020009c000000520000213d0000002304200039000000000034004b000000520000813d0000000404200039000000000441034f000000000504043b0000069d0050009c000005590000213d00000005045002100000003f06400039000006b006600197000006a50060009c000005590000213d0000008006600039000500000006001d000000400060043f000000800050043f00000024022000390000000004240019000000000034004b000000520000213d000000000005004b000004d50000613d000000a003000039000000000521034f000000000505043b0000065e0050009c000000520000213d00000000035304360000002002200039000000000042004b000004cb0000413d000000400100043d000500000001001d0000000101000039000000000201041a00000698010000410000000504000029000000000014043500000004014000390000069903000041000000000031043500000000010004110000065e031001970000002401400039000400000003001d0000000000310435000000000100041400000008022002700000065e02200197000000040020008c00000ef00000c13d0000000103000031000000200030008c0000002004000039000000000403401900000f1a0000013d000000840030008c000000520000413d0000000002000416000000000002004b000000520000c13d0000004402100370000000000202043b000800000002001d0000002402100370000000000202043b000600000002001d0000000402100370000000000202043b000700000002001d0000006402100370000000000202043b0000069d0020009c000000520000213d0000002304200039000000000034004b000000520000813d0000000404200039000000000441034f000000000504043b0000069d0050009c000005590000213d00000005045002100000003f06400039000006b006600197000006a50060009c000005590000213d0000008006600039000500000006001d000000400060043f000000800050043f00000024022000390000000004420019000000000034004b000000520000213d000000000005004b000005230000613d000000a003000039000000000521034f000000000505043b000000000005004b0000000006000039000000010600c039000000000065004b000000520000c13d00000000035304360000002002200039000000000042004b000005160000413d000000400100043d000500000001001d0000000101000039000000000201041a00000698010000410000000504000029000000000014043500000004014000390000069903000041000000000031043500000000010004110000065e031001970000002401400039000400000003001d0000000000310435000000000100041400000008022002700000065e02200197000000040020008c00000f8f0000c13d0000000103000031000000200030008c0000002004000039000000000403401900000fb90000013d000000840030008c000000520000413d0000000002000416000000000002004b000000520000c13d0000004402100370000000000202043b000700000002001d0000002402100370000000000202043b000600000002001d0000000402100370000000000202043b000800000002001d0000006402100370000000000202043b0000069d0020009c000000520000213d0000002304200039000000000034004b000000520000813d0000000404200039000000000441034f000000000504043b0000069d0050009c000005590000213d00000005045002100000003f06400039000006b006600197000006a50060009c00000b0d0000a13d000006aa01000041000000000010043f0000004101000039000000040010043f000006ab0100004100001969000104300000000001000416000000000001004b000000520000c13d0000000101000039000000000101041a00000008011002700000065e01100197000000800010043f000006a301000041000019680001042e000000240030008c000000520000413d0000000002000416000000000002004b000000520000c13d0000000401100370000000000101043b000000000010043f0000000601000039000000200010043f00000040020000390000000001000019196719480000040f000006410000013d000000640030008c000000520000413d0000000002000416000000000002004b000000520000c13d0000002402100370000000000202043b000700000002001d0000000402100370000000000202043b000800000002001d0000004401100370000000000101043b000600000001001d000000000010043f0000000601000039000000200010043f00000000010004140000065b0010009c0000065b01008041000000c0011002100000069b011001c70000801002000039196719620000040f0000000100200190000000520000613d000000000101043b000000000101041a000000000001004b000007aa0000613d000000ff0110018f000000070010008c00000afb0000213d000000040010008c00000c240000c13d0000000801000029000000000010043f0000000401000039000000200010043f00000000010004140000065b0010009c0000065b01008041000000c0011002100000069b011001c70000801002000039196719620000040f0000000100200190000000520000613d000000000101043b000800000001001d000000400100043d0000006002100039000006b203000041000000000032043500000040021000390000000603000029000000000032043500000020021000390000000703000029000000000032043500000047030000390000000000310435000006a50010009c000005590000213d0000008003100039000000400030043f0000065b0020009c0000065b02008041000000400220021000000000010104330000065b0010009c0000065b010080410000006001100210000000000121019f00000000020004140000065b0020009c0000065b02008041000000c002200210000000000112019f0000069f011001c70000801002000039196719620000040f0000000100200190000000520000613d000000000101043b000000000010043f0000000801000029000000200010043f00000000010004140000065b0010009c0000065b01008041000000c0011002100000069b011001c70000801002000039196719620000040f0000000100200190000000520000613d000000000101043b000000000301041a000000400200043d000800000002001d000600000003001d0000000002320436000700000002001d000000000010043f00000000010004140000065b0010009c0000065b01008041000000c001100210000006a0011001c70000801002000039196719620000040f0000000100200190000000520000613d0000000605000029000000000005004b0000000702000029000005f60000613d000000000101043b00000000030000190000000702000029000000000401041a000000000242043600000001011000390000000103300039000000000053004b000005f00000413d000000080120006a0000001f01100039000006c5021001970000000801200029000000000021004b000000000200003900000001020040390000069d0010009c000005590000213d0000000100200190000005590000c13d000000400010043f000000080200002900000000020204330000069d0020009c000005590000213d00000005042002100000003f03400039000006b00330019700000000031300190000069d0030009c000005590000213d000000400030043f00000000022104360000001f0340018f000000000004004b000006190000613d0000000004420019000000000500003100000002055003670000000006020019000000005705043c0000000006760436000000000046004b000006150000c13d000000000003004b00000008060000290000000003060433000000000003004b00000007070000290000062d0000613d00000000030000190000000004010433000000000034004b000013730000a13d00000005043002100000000005420019000000000474001900000000040404330000065e04400197000000000045043500000001033000390000000004060433000000000043004b000006200000413d000000400300043d00000020040000390000000005430436000000000401043300000000004504350000004001300039000000000004004b0000073a0000613d000000000500001900000000260204340000065e0660019700000000016104360000000105500039000000000045004b000006360000413d0000073a0000013d0000000001000416000000000001004b000000520000c13d0000000201000039000000000101041a000000800010043f000006a301000041000019680001042e000000640030008c000000520000413d0000000002000416000000000002004b000000520000c13d0000002402100370000000000202043b000800000002001d0000000402100370000000000202043b000700000002001d0000004401100370000000000101043b000600000001001d000000000010043f0000000601000039000000200010043f00000000010004140000065b0010009c0000065b01008041000000c0011002100000069b011001c70000801002000039196719620000040f0000000100200190000000520000613d000000000101043b000000000101041a000000000001004b000007aa0000613d000000ff0110018f000000070010008c00000afb0000213d000000040010008c00000000010000390000000101006039196717720000040f0000000701000029000000080200002900000006030000291967183e0000040f0000065e0110019700000b9c0000013d0000000001000416000000000001004b000000520000c13d0000000001030019196716e60000040f196717f00000040f00000b9c0000013d000000640030008c000000520000413d0000000002000416000000000002004b000000520000c13d0000002402100370000000000202043b000700000002001d0000000402100370000000000202043b000800000002001d0000004401100370000000000101043b000600000001001d000000000010043f0000000601000039000000200010043f00000000010004140000065b0010009c0000065b01008041000000c0011002100000069b011001c70000801002000039196719620000040f0000000100200190000000520000613d000000000101043b000000000101041a000000000001004b000007aa0000613d000000ff0110018f000000070010008c00000afb0000213d000000010010008c00000c200000c13d0000000801000029000000000010043f0000000401000039000000200010043f00000000010004140000065b0010009c0000065b01008041000000c0011002100000069b011001c70000801002000039196719620000040f0000000100200190000000520000613d000000000101043b000800000001001d000000400100043d0000006002100039000006b203000041000000000032043500000040021000390000000603000029000000000032043500000020021000390000000703000029000000000032043500000047030000390000000000310435000006a50010009c000005590000213d0000008003100039000000400030043f0000065b0020009c0000065b02008041000000400220021000000000010104330000065b0010009c0000065b010080410000006001100210000000000121019f00000000020004140000065b0020009c0000065b02008041000000c002200210000000000112019f0000069f011001c70000801002000039196719620000040f0000000100200190000000520000613d000000000101043b000000000010043f0000000801000029000000200010043f00000000010004140000065b0010009c0000065b01008041000000c0011002100000069b011001c70000801002000039196719620000040f0000000100200190000000520000613d000000000101043b000000000301041a000000400200043d000800000002001d000600000003001d0000000002320436000700000002001d000000000010043f00000000010004140000065b0010009c0000065b01008041000000c001100210000006a0011001c70000801002000039196719620000040f0000000100200190000000520000613d0000000605000029000000000005004b0000000702000029000006f60000613d000000000101043b00000000030000190000000702000029000000000401041a000000000242043600000001011000390000000103300039000000000053004b000006f00000413d000000080120006a0000001f01100039000006c5021001970000000801200029000000000021004b000000000200003900000001020040390000069d0010009c000005590000213d0000000100200190000005590000c13d000000400010043f000000080200002900000000020204330000069d0020009c000005590000213d00000005042002100000003f03400039000006b00330019700000000031300190000069d0030009c000005590000213d000000400030043f00000000022104360000001f0340018f000000000004004b000007190000613d0000000004420019000000000500003100000002055003670000000006020019000000005705043c0000000006760436000000000046004b000007150000c13d000000000003004b00000008060000290000000003060433000000000003004b00000007070000290000072c0000613d00000000030000190000000004010433000000000034004b000013730000a13d0000000504300210000000000542001900000000047400190000000004040433000000000045043500000001033000390000000004060433000000000043004b000007200000413d000000400300043d00000020040000390000000005430436000000000401043300000000004504350000004001300039000000000004004b0000073a0000613d0000000005000019000000002602043400000000016104360000000105500039000000000045004b000007350000413d00000000013100490000065b0010009c0000065b0100804100000060011002100000065b0030009c0000065b030080410000004002300210000000000121019f000019680001042e000000240030008c000000520000413d0000000002000416000000000002004b000000520000c13d0000000401100370000000000201043b000000000002004b0000000001000039000000010100c039000800000002001d000000000012004b000000520000c13d0000000101000039000000000201041a0000069801000041000000800010043f000006bd01000041000000840010043f0000000001000411000000a40010043f000000000100041400000008022002700000065e02200197000000040020008c00000a1a0000c13d0000000103000031000000200030008c0000002004000039000000000403401900000a3e0000013d000000640030008c000000520000413d0000000002000416000000000002004b000000520000c13d0000002402100370000000000202043b000800000002001d0000000402100370000000000202043b000700000002001d0000004401100370000000000101043b000600000001001d000000000010043f0000000601000039000000200010043f00000000010004140000065b0010009c0000065b01008041000000c0011002100000069b011001c70000801002000039196719620000040f0000000100200190000000520000613d000000000101043b000000000101041a000000000001004b000007aa0000613d000000ff0110018f000000070010008c00000afb0000213d000000010010008c000000000100003900000001010060391967189a0000040f0000000701000029000000080200002900000006030000291967183e0000040f00000b9c0000013d000000640030008c000000520000413d0000000002000416000000000002004b000000520000c13d0000002402100370000000000202043b000800000002001d0000000402100370000000000202043b000700000002001d0000004401100370000000000101043b000600000001001d000000000010043f0000000601000039000000200010043f00000000010004140000065b0010009c0000065b01008041000000c0011002100000069b011001c70000801002000039196719620000040f0000000100200190000000520000613d000000000101043b000000000101041a000000000001004b00000af80000c13d000000400100043d0000004402100039000006c2030000410000000000320435000000240210003900000013030000390000000000320435000006a70200004100000000002104350000000402100039000000200300003900000000003204350000065b0010009c0000065b010080410000004001100210000006a8011001c70000196900010430000000640030008c000000520000413d0000000002000416000000000002004b000000520000c13d0000004402100370000000000202043b000700000002001d0000002402100370000000000202043b000800000002001d0000000401100370000000000101043b000000000010043f0000000401000039000000200010043f00000000010004140000065b0010009c0000065b01008041000000c0011002100000069b011001c70000801002000039196719620000040f0000000100200190000000520000613d000000000101043b0000000802000029000000000020043f000000200010043f00000000010004140000065b0010009c0000065b01008041000000c0011002100000069b011001c70000801002000039196719620000040f0000000100200190000000520000613d000000000101043b000000000201041a000000070020006b000000520000813d000000000010043f00000020020000390000000001000019196719480000040f0000000701100029000000000101041a00000b9c0000013d0000008001000039000000010220018f00000000002104350000004001100210000006a4011001c7000019680001042e0000065b0010009c0000065b01008041000000c0011002100000069a011001c7196719620000040f00000060031002700000065b03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000080057001bf000008060000613d0000008008000039000000000901034f000000009a09043c0000000008a80436000000000058004b000008020000c13d000000000006004b000008130000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f000000010020019000000a540000613d0000001f01400039000000600110018f00000080011001bf000000400010043f000000200030008c000000520000413d000000800100043d000000000001004b0000000002000039000000010200c039000000000021004b000000520000c13d000000000001004b000009510000613d0000000701000029000000000010043f0000000601000039000000200010043f00000000010004140000065b0010009c0000065b01008041000000c0011002100000069b011001c70000801002000039196719620000040f0000000100200190000000520000613d000000000101043b000000000101041a000000000001004b000007aa0000613d000000ff0310018f000000070030008c00000afb0000213d000000400200043d0000002401200039000300000002001d0000000402200039000000050030008c000010730000c13d0000000103000039000000000303041a0000069804000041000000030500002900000000004504350000069904000041000000000042043500000008020000290000000000210435000000000100041400000008023002700000065e02200197000000040020008c0000108c0000c13d0000000103000031000000200030008c00000020040000390000000004034019000010b50000013d0000065b0010009c0000065b01008041000000c0011002100000069a011001c7196719620000040f00000060031002700000065b03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000080057001bf000008650000613d0000008008000039000000000901034f000000009a09043c0000000008a80436000000000058004b000008610000c13d000000000006004b000008720000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f000000010020019000000a600000613d0000001f01400039000000600110018f00000080011001bf000000400010043f000000200030008c000000520000413d000000800100043d000000000001004b0000000002000039000000010200c039000000000021004b000000520000c13d000000000001004b00000ba30000c13d000006a201000041000000000010043f000000070100002900000af30000013d0000065b0010009c0000065b01008041000000c0011002100000069a011001c7196719620000040f00000060031002700000065b03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000080057001bf0000089b0000613d0000008008000039000000000901034f000000009a09043c0000000008a80436000000000058004b000008970000c13d000000000006004b000008a80000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f000000010020019000000a6c0000613d0000001f01400039000000600110018f00000080011001bf000000400010043f000000200030008c000000520000413d000000800100043d000000000001004b0000000002000039000000010200c039000000000021004b000000520000c13d000000000001004b000009510000613d0000000701000029000000000010043f0000000601000039000000200010043f00000000010004140000065b0010009c0000065b01008041000000c0011002100000069b011001c70000801002000039196719620000040f0000000100200190000000520000613d000000000101043b000000000101041a000000000001004b000007aa0000613d000000ff0110018f000000070010008c00000afb0000213d000000010010008c00000c200000c13d0000000101000039000000000201041a000000400400043d00000024014000390000000803000029000000000031043500000698010000410000000000140435000300000004001d000000040140003900000699030000410000000000310435000000000100041400000008022002700000065e02200197000000040020008c000011100000c13d0000000103000031000000200030008c00000020040000390000000004034019000011390000013d0000065b0010009c0000065b01008041000000c0011002100000069a011001c7196719620000040f00000060031002700000065b03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000080057001bf000008f90000613d0000008008000039000000000901034f000000009a09043c0000000008a80436000000000058004b000008f50000c13d000000000006004b000009060000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f000000010020019000000a780000613d0000001f01400039000000600110018f00000080011001bf000000400010043f000000200030008c000000520000413d000000800100043d000000000001004b0000000002000039000000010200c039000000000021004b000000520000c13d000000000001004b00000ee00000c13d000006a201000041000000000010043f0000000001000411000000040010043f000006b601000041000000240010043f0000069c0100004100001969000104300000065b0010009c0000065b01008041000000c0011002100000069a011001c7196719620000040f00000060031002700000065b03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000080057001bf000009330000613d0000008008000039000000000901034f000000009a09043c0000000008a80436000000000058004b0000092f0000c13d000000000006004b000009400000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f000000010020019000000b010000613d0000001f01400039000000600110018f00000080011001bf000000400010043f000000200030008c000000520000413d000000800100043d000000000001004b0000000002000039000000010200c039000000000021004b000000520000c13d000000000001004b00000bf30000c13d000006a201000041000000000010043f000000080100002900000af30000013d0000065b0010009c0000065b01008041000000c001100210000006ba011001c7196719620000040f00000060031002700000065b03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000080057001bf000009690000613d0000008008000039000000000901034f000000009a09043c0000000008a80436000000000058004b000009650000c13d000000000006004b000009760000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f000000010020019000000b370000613d0000001f01400039000000600110018f00000080011001bf000000400010043f000000200030008c000000520000413d000000800300043d000000000003004b0000000002000039000000010200c039000000000023004b000000520000c13d000007ed0000013d0000065b0010009c0000065b01008041000000c0011002100000069a011001c7196719620000040f00000060031002700000065b03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000080057001bf0000099a0000613d0000008008000039000000000901034f000000009a09043c0000000008a80436000000000058004b000009960000c13d000000000006004b000009a70000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f000000010020019000000b430000613d0000001f01400039000000600110018f00000080011001bf000000400010043f000000200030008c000000520000413d000000800100043d000000000001004b0000000002000039000000010200c039000000000021004b000000520000c13d000000000001004b00000af00000613d0000000801000029000000000010043f0000000601000039000000200010043f00000000010004140000065b0010009c0000065b01008041000000c0011002100000069b011001c70000801002000039196719620000040f0000000100200190000000520000613d000000000101043b000000000101041a000000000001004b000007aa0000613d000000ff0110018f000000080010008c00000afb0000813d000000040010008c00000c240000c13d0000000101000039000000000201041a000000400400043d00000024014000390000000403000029000000000031043500000698010000410000000000140435000300000004001d000000040140003900000699030000410000000000310435000000000100041400000008022002700000065e02200197000000040020008c000012230000c13d0000000103000031000000200030008c000000200400003900000000040340190000124c0000013d0000065b0010009c0000065b01008041000000c0011002100000069a011001c7196719620000040f00000060031002700000065b03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000080057001bf000009f80000613d0000008008000039000000000901034f000000009a09043c0000000008a80436000000000058004b000009f40000c13d000000000006004b00000a050000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f000000010020019000000b4f0000613d0000001f01400039000000600110018f00000080011001bf000000400010043f000000200030008c000000520000413d000000800100043d000000000001004b0000000002000039000000010200c039000000000021004b000000520000c13d000000000001004b00000c2b0000c13d000006a201000041000000000010043f000000060100002900000af30000013d0000065b0010009c0000065b01008041000000c0011002100000069a011001c7196719620000040f00000060031002700000065b03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000080057001bf00000a2e0000613d0000008008000039000000000901034f000000009a09043c0000000008a80436000000000058004b00000a2a0000c13d000000000006004b00000a3b0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f000000010020019000000b5b0000613d0000001f01400039000000600210018f00000080012001bf000000400010043f000000200030008c000000520000413d000000800300043d000000000003004b0000000004000039000000010400c039000000000043004b000000520000c13d000000000003004b00000c5c0000c13d000006a201000041000000000010043f0000000001000411000000040010043f000006bd01000041000000240010043f0000069c0100004100001969000104300000001f0530018f0000065d06300198000000400200043d000000000462001900000b7e0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000a5b0000c13d00000b7e0000013d0000001f0530018f0000065d06300198000000400200043d000000000462001900000b7e0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000a670000c13d00000b7e0000013d0000001f0530018f0000065d06300198000000400200043d000000000462001900000b7e0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000a730000c13d00000b7e0000013d0000001f0530018f0000065d06300198000000400200043d000000000462001900000b7e0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000a7f0000c13d00000b7e0000013d0000065b0010009c0000065b01008041000000c0011002100000069a011001c7196719620000040f00000060031002700000065b03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000080057001bf00000a980000613d0000008008000039000000000901034f000000009a09043c0000000008a80436000000000058004b00000a940000c13d000000000006004b00000aa50000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f000000010020019000000b670000613d0000001f01400039000000600110018f00000080011001bf000000400010043f000000200030008c000000520000413d000000800100043d000000000001004b0000000002000039000000010200c039000000000021004b000000520000c13d000000000001004b00000c710000c13d000006a201000041000000000010043f0000000001000411000000040010043f000006ac01000041000000240010043f0000069c0100004100001969000104300000065b0010009c0000065b01008041000000c0011002100000069a011001c7196719620000040f000000800a00003900000060031002700000065b03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000080057001bf00000ad20000613d000000000801034f000000008908043c000000000a9a043600000000005a004b00000ace0000c13d000000000006004b00000adf0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f000000010020019000000b730000613d0000001f01400039000000600110018f00000080011001bf000000400010043f000000200030008c000000520000413d000000800100043d000000000001004b0000000002000039000000010200c039000000000021004b000000520000c13d000000000001004b00000c7c0000c13d000006a201000041000000000010043f0000000401000029000000040010043f0000069901000041000000240010043f0000069c010000410000196900010430000000ff0110018f000000070010008c00000b910000a13d000006aa01000041000000000010043f0000002101000039000000040010043f000006ab0100004100001969000104300000001f0530018f0000065d06300198000000400200043d000000000462001900000b7e0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000b080000c13d00000b7e0000013d0000008006600039000500000006001d000000400060043f000000800050043f00000024022000390000000004240019000000000034004b000000520000213d000000000005004b00000b200000613d000000a003000039000000000521034f000000000505043b00000000035304360000002002200039000000000042004b00000b180000413d000000400100043d000500000001001d0000000101000039000000000201041a00000698010000410000000504000029000000000014043500000004014000390000069903000041000000000031043500000000010004110000065e031001970000002401400039000400000003001d0000000000310435000000000100041400000008022002700000065e02200197000000040020008c00000df30000c13d0000000103000031000000200030008c0000002004000039000000000403401900000e1d0000013d0000001f0530018f0000065d06300198000000400200043d000000000462001900000b7e0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000b3e0000c13d00000b7e0000013d0000001f0530018f0000065d06300198000000400200043d000000000462001900000b7e0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000b4a0000c13d00000b7e0000013d0000001f0530018f0000065d06300198000000400200043d000000000462001900000b7e0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000b560000c13d00000b7e0000013d0000001f0530018f0000065d06300198000000400200043d000000000462001900000b7e0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000b620000c13d00000b7e0000013d0000001f0530018f0000065d06300198000000400200043d000000000462001900000b7e0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000b6e0000c13d00000b7e0000013d0000001f0530018f0000065d06300198000000400200043d000000000462001900000b7e0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000b7a0000c13d000000000005004b00000b8b0000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f000000000014043500000060013002100000065b0020009c0000065b020080410000004002200210000000000112019f0000196900010430000000030010008c000000000100003900000001010060391967182a0000040f0000000701000029000000080200002900000006030000291967183e0000040f000000010010008c00000000010000390000000101006039000000400200043d00000000001204350000065b0020009c0000065b020080410000004001200210000006a4011001c7000019680001042e0000000801000029000000000010043f0000000301000039000000200010043f00000000010004140000065b0010009c0000065b01008041000000c0011002100000069b011001c70000801002000039196719620000040f0000000100200190000000520000613d000000000101043b000700000001001d000000400100043d000000400210003900000006030000290000000000320435000000200210003900000005030000290000000000320435000000400300003900000000003104350000069e0010009c000005590000213d0000006003100039000000400030043f0000065b0020009c0000065b02008041000000400220021000000000010104330000065b0010009c0000065b010080410000006001100210000000000121019f00000000020004140000065b0020009c0000065b02008041000000c002200210000000000112019f0000069f011001c70000801002000039196719620000040f0000000100200190000000520000613d000000000101043b000000000010043f0000000701000029000000200010043f00000000010004140000065b0010009c0000065b01008041000000c0011002100000069b011001c70000801002000039196719620000040f0000000100200190000000520000613d000000000101043b0000000402000029000000000021041b000000400100043d00000000002104350000065b0010009c0000065b01008041000000400110021000000000020004140000065b0020009c0000065b02008041000000c002200210000000000112019f000006a0011001c70000800d020000390000000403000039000006a10400004100000008050000290000000506000029000000060700002900000edd0000013d0000000701000029000000000010043f0000000601000039000000200010043f00000000010004140000065b0010009c0000065b01008041000000c0011002100000069b011001c70000801002000039196719620000040f0000000100200190000000520000613d000000000101043b000000000101041a000000000001004b000007aa0000613d000000ff0310018f000000070030008c00000afb0000213d000000400200043d0000002401200039000300000002001d0000000402200039000000020030008c0000107d0000c13d0000000103000039000000000303041a0000069804000041000000030500002900000000004504350000069904000041000000000042043500000008020000290000000000210435000000000100041400000008023002700000065e02200197000000040020008c000011940000c13d0000000103000031000000200030008c00000020040000390000000004034019000011bd0000013d000000400100043d0000004402100039000006b50300004100000c270000013d000000400100043d0000004402100039000006c103000041000000000032043500000024021000390000001503000039000007b00000013d0000000801000029000000000010043f0000000601000039000000200010043f00000000010004140000065b0010009c0000065b01008041000000c0011002100000069b011001c70000801002000039196719620000040f0000000100200190000000520000613d000000000101043b000000000101041a000000000001004b000010540000c13d0000000801000029000000000010043f0000000601000039000000200010043f00000000010004140000065b0010009c0000065b01008041000000c0011002100000069b011001c70000801002000039196719620000040f0000000100200190000000520000613d000000000101043b0000000702000029000000000021041b000000400100043d00000000002104350000065b0010009c0000065b01008041000000400110021000000000020004140000065b0020009c0000065b02008041000000c002200210000000000112019f000006a0011001c70000800d020000390000000203000039000006c404000041000000080500002900000edd0000013d0000000103000039000000000503041a000000ff0450018f000000080000006b00000ecd0000c13d000000000004004b00000ee20000613d000006c602500197000000000023041b00000000020004110000000000210435000000400110021000000000020004140000065b0020009c0000065b02008041000000c002200210000000000112019f000006a0011001c70000800d02000039000006bf0400004100000edd0000013d00000008010000290000065e00100198000000080110021000000660011001970000000103000039000000000203041a000006ad02200197000000000112019f000000000013041b000000800000613d00000ee00000013d0000000801000029000000000010043f0000000601000039000000200010043f00000000010004140000065b0010009c0000065b01008041000000c0011002100000069b011001c70000801002000039196719620000040f0000000100200190000000520000613d000000000101043b000000000101041a000000000001004b000007aa0000613d000000ff0110018f000000070010008c00000afb0000213d000000030010008c00000ca80000c13d0000000101000039000000000201041a000000400400043d00000024014000390000000403000029000000000031043500000698010000410000000000140435000300000004001d000000040140003900000699030000410000000000310435000000000100041400000008022002700000065e02200197000000040020008c000012a80000c13d0000000103000031000000200030008c00000020040000390000000004034019000012d10000013d000000400100043d0000004402100039000006b703000041000000000032043500000024021000390000001203000039000007b00000013d0000000503000029000500000003001d0000065b0030009c0000065b0300804100000040033002100000065b0010009c0000065b01008041000000c001100210000000000131019f0000069c011001c7196719620000040f00000060031002700000065b03300197000000200030008c000000200400003900000000040340190000001f0640018f0000002007400190000000050570002900000cc90000613d000000000801034f0000000509000029000000008a08043c0000000009a90436000000000059004b00000cc50000c13d000000000006004b00000cd60000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f0000000100200190000010300000613d0000001f01400039000000600210018f0000000501200029000000000021004b000000000200003900000001020040390000069d0010009c000005590000213d0000000100200190000005590000c13d000000400010043f000000200030008c000000520000413d00000005010000290000000001010433000000000001004b0000000002000039000000010200c039000000000021004b000000520000c13d000000000001004b00000af00000613d0000000801000029000000000010043f0000000601000039000000200010043f00000000010004140000065b0010009c0000065b01008041000000c0011002100000069b011001c70000801002000039196719620000040f0000000100200190000000520000613d000000000101043b000000000101041a000000000001004b000007aa0000613d000000ff0110018f000000070010008c00000afb0000213d000000010010008c000013790000c13d000000800200043d0000069d0020009c000005590000213d00000005012002100000003f03100039000006b003300197000000400400043d0000000003340019000300000004001d000000000043004b000000000400003900000001040040390000069d0030009c000005590000213d0000000100400190000005590000c13d000000400030043f00000003030000290000000002230436000500000002001d0000001f0210018f000000000001004b00000d240000613d0000000504000029000000000114001900000000030000310000000203300367000000003503043c0000000004540436000000000014004b00000d200000c13d000000000002004b000000800100043d000000000001004b0000000504000029000000030500002900000d370000613d00000000010000190000000002050433000000000012004b000013730000a13d00000005021002100000000003420019000000a002200039000000000202043300000000002304350000000101100039000000800200043d000000000021004b00000d2b0000413d0000000101000039000000000201041a000000400400043d00000024014000390000000403000029000000000031043500000698010000410000000000140435000200000004001d000000040140003900000699030000410000000000310435000000000100041400000008022002700000065e02200197000000040020008c0000138e0000c13d0000000103000031000000200030008c00000020040000390000000004034019000013b70000013d00000005030000290000065b0030009c0000065b0300804100000040033002100000065b0010009c0000065b01008041000000c001100210000000000131019f0000069c011001c7196719620000040f00000060031002700000065b03300197000000200030008c000000200400003900000000040340190000001f0640018f0000002007400190000000050570002900000d660000613d000000000801034f0000000509000029000000008a08043c0000000009a90436000000000059004b00000d620000c13d000000000006004b00000d730000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00000001002001900000103c0000613d0000001f01400039000000600210018f0000000501200029000000000021004b000000000200003900000001020040390000069d0010009c000005590000213d0000000100200190000005590000c13d000000400010043f000000200030008c000000520000413d00000005010000290000000001010433000000000001004b0000000002000039000000010200c039000000000021004b000000520000c13d000000000001004b00000af00000613d0000000801000029000000000010043f0000000601000039000000200010043f00000000010004140000065b0010009c0000065b01008041000000c0011002100000069b011001c70000801002000039196719620000040f0000000100200190000000520000613d000000000101043b000000000101041a000000000001004b000007aa0000613d000000ff0210018f000000070020008c00000afb0000213d000000400100043d000000060020008c0000137d0000c13d00000040021000390000000803000029000000000032043500000040020000390000000002210436000000070300002900000000003204350000069e0010009c000005590000213d0000006003100039000000400030043f0000065b0020009c0000065b02008041000000400220021000000000010104330000065b0010009c0000065b010080410000006001100210000000000121019f00000000020004140000065b0020009c0000065b02008041000000c002200210000000000112019f0000069f011001c70000801002000039196719620000040f0000000100200190000000520000613d000000000101043b000500000001001d0000000601000029000000000010043f0000000501000039000000200010043f00000000010004140000065b0010009c0000065b01008041000000c0011002100000069b011001c70000801002000039196719620000040f0000000100200190000000520000613d000000000101043b0000000502000029000000000020043f000000200010043f00000000010004140000065b0010009c0000065b01008041000000c0011002100000069b011001c70000801002000039196719620000040f0000000100200190000000520000613d000000000101043b000500000001001d000000800100043d000400000001001d0000069d0010009c000005590000213d0000000501000029000000000101041a000000010210019000000001011002700000007f0110618f000300000001001d0000001f0010008c00000000010000390000000101002039000000000012004b0000162a0000613d000006aa01000041000000000010043f0000002201000039000000040010043f000006ab0100004100001969000104300000000503000029000500000003001d0000065b0030009c0000065b0300804100000040033002100000065b0010009c0000065b01008041000000c001100210000000000131019f0000069c011001c7196719620000040f00000060031002700000065b03300197000000200030008c000000200400003900000000040340190000001f0640018f0000002007400190000000050570002900000e0d0000613d000000000801034f0000000509000029000000008a08043c0000000009a90436000000000059004b00000e090000c13d000000000006004b00000e1a0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f0000000100200190000010480000613d0000001f01400039000000600210018f0000000501200029000000000021004b000000000200003900000001020040390000069d0010009c000005590000213d0000000100200190000005590000c13d000000400010043f000000200030008c000000520000413d00000005010000290000000001010433000000000001004b0000000002000039000000010200c039000000000021004b000000520000c13d000000000001004b00000af00000613d0000000801000029000000000010043f0000000401000039000000200010043f00000000010004140000065b0010009c0000065b01008041000000c0011002100000069b011001c70000801002000039196719620000040f0000000100200190000000520000613d000000000101043b000500000001001d000000400100043d0000006002100039000006b203000041000000000032043500000040021000390000000703000029000000000032043500000020021000390000000603000029000000000032043500000047030000390000000000310435000006a50010009c000005590000213d0000008003100039000000400030043f0000065b0020009c0000065b02008041000000400220021000000000010104330000065b0010009c0000065b010080410000006001100210000000000121019f00000000020004140000065b0020009c0000065b02008041000000c002200210000000000112019f0000069f011001c70000801002000039196719620000040f0000000100200190000000520000613d000000000101043b000000000010043f0000000501000029000000200010043f00000000010004140000065b0010009c0000065b01008041000000c0011002100000069b011001c70000801002000039196719620000040f0000000100200190000000520000613d000000000101043b000500000001001d000000800100043d000400000001001d0000069d0010009c000005590000213d0000000502000029000000000302041a0000000401000029000000000012041b000300000003001d000000000031004b00000e920000813d0000000501000029000000000010043f00000000010004140000065b0010009c0000065b01008041000000c001100210000006a0011001c70000801002000039196719620000040f0000000100200190000000520000613d000000000201043b00000004012000290000000302200029000000000021004b00000e920000813d000000000001041b0000000101100039000000000021004b00000e8e0000413d0000000501000029000000000010043f00000000010004140000065b0010009c0000065b01008041000000c001100210000006a0011001c70000801002000039196719620000040f0000000100200190000000520000613d000000000101043b0000000406000029000000000006004b00000ea90000613d000000a002000039000000000300001900000000041300190000000025020434000000000054041b0000000103300039000000000063004b00000ea30000413d000000400100043d00000020020000390000000002210436000000800300043d00000000003204350000004002100039000000000003004b00000eb80000613d000000a0040000390000000005000019000000004604043400000000026204360000000105500039000000000035004b00000eb30000413d00000000021200490000065b0020009c0000065b0200804100000060022002100000065b0010009c0000065b010080410000004001100210000000000112019f00000000020004140000065b0020009c0000065b02008041000000c002200210000000000121019f0000069f011001c70000800d020000390000000403000039000006b30400004100000008050000290000000606000029000000070700002900000edd0000013d000000000004004b00000ee20000c13d000006c60250019700000001022001bf000000000023041b00000000020004110000000000210435000000400110021000000000020004140000065b0020009c0000065b02008041000000c002200210000000000112019f000006a0011001c70000800d02000039000006be040000411967195d0000040f0000000100200190000000520000613d0000000001000019000019680001042e000006a703000041000000000031043500000084032001bf00000020040000390000000000430435000000c403200039000006c0040000410000000000430435000000a402200039000000140300003900000000003204350000004001100210000006a8011001c700001969000104300000000503000029000500000003001d0000065b0030009c0000065b0300804100000040033002100000065b0010009c0000065b01008041000000c001100210000000000131019f0000069c011001c7196719620000040f00000060031002700000065b03300197000000200030008c000000200400003900000000040340190000001f0640018f0000002007400190000000050570002900000f0a0000613d000000000801034f0000000509000029000000008a08043c0000000009a90436000000000059004b00000f060000c13d000000000006004b00000f170000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00000001002001900000105b0000613d0000001f01400039000000600210018f0000000501200029000000000021004b000000000200003900000001020040390000069d0010009c000005590000213d0000000100200190000005590000c13d000000400010043f000000200030008c000000520000413d00000005010000290000000001010433000000000001004b0000000002000039000000010200c039000000000021004b000000520000c13d000000000001004b00000af00000613d0000000801000029000000000010043f0000000601000039000000200010043f00000000010004140000065b0010009c0000065b01008041000000c0011002100000069b011001c70000801002000039196719620000040f0000000100200190000000520000613d000000000101043b000000000101041a000000000001004b000007aa0000613d000000ff0110018f000000070010008c00000afb0000213d000000040010008c000013830000c13d000000800200043d0000069d0020009c000005590000213d00000005012002100000003f03100039000006b003300197000000400400043d0000000003340019000300000004001d000000000043004b000000000400003900000001040040390000069d0030009c000005590000213d0000000100400190000005590000c13d000000400030043f00000003030000290000000002230436000500000002001d0000001f0210018f000000000001004b00000f650000613d0000000504000029000000000114001900000000030000310000000203300367000000003503043c0000000004540436000000000014004b00000f610000c13d000000000002004b000000800100043d000000000001004b0000000504000029000000030500002900000f790000613d00000000010000190000000002050433000000000012004b000013730000a13d00000005021002100000000003420019000000a00220003900000000020204330000065e0220019700000000002304350000000101100039000000800200043d000000000021004b00000f6c0000413d0000000101000039000000000201041a000000400400043d00000024014000390000000403000029000000000031043500000698010000410000000000140435000200000004001d000000040140003900000699030000410000000000310435000000000100041400000008022002700000065e02200197000000040020008c0000145e0000c13d0000000103000031000000200030008c00000020040000390000000004034019000014870000013d0000000503000029000500000003001d0000065b0030009c0000065b0300804100000040033002100000065b0010009c0000065b01008041000000c001100210000000000131019f0000069c011001c7196719620000040f00000060031002700000065b03300197000000200030008c000000200400003900000000040340190000001f0640018f0000002007400190000000050570002900000fa90000613d000000000801034f0000000509000029000000008a08043c0000000009a90436000000000059004b00000fa50000c13d000000000006004b00000fb60000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f0000000100200190000010670000613d0000001f01400039000000600210018f0000000501200029000000000021004b000000000200003900000001020040390000069d0010009c000005590000213d0000000100200190000005590000c13d000000400010043f000000200030008c000000520000413d00000005010000290000000001010433000000000001004b0000000002000039000000010200c039000000000021004b000000520000c13d000000000001004b00000af00000613d0000000801000029000000000010043f0000000601000039000000200010043f00000000010004140000065b0010009c0000065b01008041000000c0011002100000069b011001c70000801002000039196719620000040f0000000100200190000000520000613d000000000101043b000000000101041a000000000001004b000007aa0000613d000000ff0110018f000000070010008c00000afb0000213d000000030010008c0000138a0000c13d000000800200043d0000069d0020009c000005590000213d00000005012002100000003f03100039000006b003300197000000400400043d0000000003340019000300000004001d000000000043004b000000000400003900000001040040390000069d0030009c000005590000213d0000000100400190000005590000c13d000000400030043f00000003030000290000000002230436000500000002001d0000001f0210018f000000000001004b000010040000613d0000000504000029000000000114001900000000030000310000000203300367000000003503043c0000000004540436000000000014004b000010000000c13d000000000002004b000000800100043d000000000001004b000000050400002900000003050000290000101a0000613d00000000010000190000000002050433000000000012004b000013730000a13d00000005021002100000000003240019000000a0022000390000000002020433000000000002004b0000000002000039000000010200c03900000000002304350000000101100039000000800200043d000000000021004b0000100b0000413d0000000101000039000000000201041a000000400400043d00000024014000390000000403000029000000000031043500000698010000410000000000140435000200000004001d000000040140003900000699030000410000000000310435000000000100041400000008022002700000065e02200197000000040020008c0000152e0000c13d0000000103000031000000200030008c00000020040000390000000004034019000015570000013d0000001f0530018f0000065d06300198000000400200043d000000000462001900000b7e0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000010370000c13d00000b7e0000013d0000001f0530018f0000065d06300198000000400200043d000000000462001900000b7e0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000010430000c13d00000b7e0000013d0000001f0530018f0000065d06300198000000400200043d000000000462001900000b7e0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b0000104f0000c13d00000b7e0000013d000000400100043d0000004402100039000006c303000041000000000032043500000024021000390000001703000039000007b00000013d0000001f0530018f0000065d06300198000000400200043d000000000462001900000b7e0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000010620000c13d00000b7e0000013d0000001f0530018f0000065d06300198000000400200043d000000000462001900000b7e0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b0000106e0000c13d00000b7e0000013d000006a7030000410000000304000029000000000034043500000020030000390000000000320435000000150200003900000000002104350000004401400039000006bc02000041000010860000013d000006a7030000410000000304000029000000000034043500000020030000390000000000320435000000140200003900000000002104350000004401400039000006b80200004100000000002104350000065b0040009c0000065b040080410000004001400210000006a8011001c7000019690001043000000003030000290000065b0030009c0000065b0300804100000040033002100000065b0010009c0000065b01008041000000c001100210000000000131019f0000069c011001c7196719620000040f00000060031002700000065b03300197000000200030008c000000200400003900000000040340190000001f0640018f00000020074001900000000305700029000010a50000613d000000000801034f0000000309000029000000008a08043c0000000009a90436000000000059004b000010a10000c13d000000000006004b000010b20000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f0000000100200190000013370000613d0000001f01400039000000600210018f0000000301200029000000000021004b000000000200003900000001020040390000069d0010009c000005590000213d0000000100200190000005590000c13d000000400010043f000000200030008c000000520000413d00000003010000290000000001010433000000000001004b0000000002000039000000010200c039000000000021004b000000520000c13d000000000001004b000009510000613d0000000601000029000000000010043f0000000301000039000000200010043f00000000010004140000065b0010009c0000065b01008041000000c0011002100000069b011001c70000801002000039196719620000040f0000000100200190000000520000613d000000000101043b000800000001001d000000400100043d000000400210003900000007030000290000000000320435000000200210003900000005030000290000000000320435000000400300003900000000003104350000069e0010009c000005590000213d0000006003100039000000400030043f0000065b0020009c0000065b02008041000000400220021000000000010104330000065b0010009c0000065b010080410000006001100210000000000121019f00000000020004140000065b0020009c0000065b02008041000000c002200210000000000112019f0000069f011001c70000801002000039196719620000040f0000000100200190000000520000613d000000000101043b000000000010043f0000000801000029000000200010043f00000000010004140000065b0010009c0000065b01008041000000c0011002100000069b011001c70000801002000039196719620000040f0000000100200190000000520000613d000000000101043b0000000402000029000000000021041b000000400100043d00000000002104350000065b0010009c0000065b0100804100000040011002100000000002000414000012170000013d00000003030000290000065b0030009c0000065b0300804100000040033002100000065b0010009c0000065b01008041000000c001100210000000000131019f0000069c011001c7196719620000040f00000060031002700000065b03300197000000200030008c000000200400003900000000040340190000001f0640018f00000020074001900000000305700029000011290000613d000000000801034f0000000309000029000000008a08043c0000000009a90436000000000059004b000011250000c13d000000000006004b000011360000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f0000000100200190000013430000613d0000001f01400039000000600210018f0000000301200029000000000021004b000000000200003900000001020040390000069d0010009c000005590000213d0000000100200190000005590000c13d000000400010043f000000200030008c000000520000413d00000003010000290000000001010433000000000001004b0000000002000039000000010200c039000000000021004b000000520000c13d000000000001004b000009510000613d0000000601000029000000000010043f0000000301000039000000200010043f00000000010004140000065b0010009c0000065b01008041000000c0011002100000069b011001c70000801002000039196719620000040f0000000100200190000000520000613d000000000101043b000800000001001d000000400100043d000000400210003900000007030000290000000000320435000000200210003900000005030000290000000000320435000000400300003900000000003104350000069e0010009c000005590000213d0000006003100039000000400030043f0000065b0020009c0000065b02008041000000400220021000000000010104330000065b0010009c0000065b010080410000006001100210000000000121019f00000000020004140000065b0020009c0000065b02008041000000c002200210000000000112019f0000069f011001c70000801002000039196719620000040f0000000100200190000000520000613d000000000101043b000000000010043f0000000801000029000000200010043f00000000010004140000065b0010009c0000065b01008041000000c0011002100000069b011001c70000801002000039196719620000040f0000000100200190000000520000613d000000000101043b0000000402000029000000000021041b000000400100043d00000000002104350000065b0010009c0000065b0100804100000040011002100000000002000414000012170000013d00000003030000290000065b0030009c0000065b0300804100000040033002100000065b0010009c0000065b01008041000000c001100210000000000131019f0000069c011001c7196719620000040f00000060031002700000065b03300197000000200030008c000000200400003900000000040340190000001f0640018f00000020074001900000000305700029000011ad0000613d000000000801034f0000000309000029000000008a08043c0000000009a90436000000000059004b000011a90000c13d000000000006004b000011ba0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00000001002001900000134f0000613d0000001f01400039000000600210018f0000000301200029000000000021004b000000000200003900000001020040390000069d0010009c000005590000213d0000000100200190000005590000c13d000000400010043f000000200030008c000000520000413d00000003010000290000000001010433000000000001004b0000000002000039000000010200c039000000000021004b000000520000c13d000000000001004b000009510000613d0000000601000029000000000010043f0000000301000039000000200010043f00000000010004140000065b0010009c0000065b01008041000000c0011002100000069b011001c70000801002000039196719620000040f0000000100200190000000520000613d000000000101043b000800000001001d000000400100043d000000400210003900000007030000290000000000320435000000200210003900000005030000290000000000320435000000400300003900000000003104350000069e0010009c000005590000213d0000006003100039000000400030043f0000065b0020009c0000065b02008041000000400220021000000000010104330000065b0010009c0000065b010080410000006001100210000000000121019f00000000020004140000065b0020009c0000065b02008041000000c002200210000000000112019f0000069f011001c70000801002000039196719620000040f0000000100200190000000520000613d000000000101043b000000000010043f0000000801000029000000200010043f00000000010004140000065b0010009c0000065b01008041000000c0011002100000069b011001c70000801002000039196719620000040f0000000100200190000000520000613d000000000101043b0000000402000029000000000021041b000000400100043d00000000002104350000065b0010009c0000065b01008041000000400110021000000000020004140000065b0020009c0000065b02008041000000c002200210000000000112019f000006a0011001c70000800d020000390000000403000039000006a10400004100000006050000290000000506000029000000070700002900000edd0000013d00000003030000290000065b0030009c0000065b0300804100000040033002100000065b0010009c0000065b01008041000000c001100210000000000131019f0000069c011001c7196719620000040f00000060031002700000065b03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000003057000290000123c0000613d000000000801034f0000000309000029000000008a08043c0000000009a90436000000000059004b000012380000c13d000000000006004b000012490000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00000001002001900000135b0000613d0000001f01400039000000600210018f0000000301200029000000000021004b000000000200003900000001020040390000069d0010009c000005590000213d0000000100200190000005590000c13d000000400010043f000000200030008c000000520000413d00000003010000290000000001010433000000000001004b0000000002000039000000010200c039000000000021004b000000520000c13d000000000001004b00000af00000613d0000000701000029000000000010043f0000000301000039000000200010043f00000000010004140000065b0010009c0000065b01008041000000c0011002100000069b011001c70000801002000039196719620000040f0000000100200190000000520000613d000000000101043b000400000001001d000000400100043d000000400210003900000008030000290000000000320435000000200210003900000006030000290000000000320435000000400300003900000000003104350000069e0010009c000005590000213d0000006003100039000000400030043f0000065b0020009c0000065b02008041000000400220021000000000010104330000065b0010009c0000065b010080410000006001100210000000000121019f00000000020004140000065b0020009c0000065b02008041000000c002200210000000000112019f0000069f011001c70000801002000039196719620000040f0000000100200190000000520000613d000000000101043b000000000010043f0000000401000029000000200010043f00000000010004140000065b0010009c0000065b01008041000000c0011002100000069b011001c70000801002000039196719620000040f0000000100200190000000520000613d00000005020000290000065e02200197000000000101043b000000000021041b000000400100043d00000000002104350000065b0010009c0000065b01008041000000400110021000000000020004140000132b0000013d00000003030000290000065b0030009c0000065b0300804100000040033002100000065b0010009c0000065b01008041000000c001100210000000000131019f0000069c011001c7196719620000040f00000060031002700000065b03300197000000200030008c000000200400003900000000040340190000001f0640018f00000020074001900000000305700029000012c10000613d000000000801034f0000000309000029000000008a08043c0000000009a90436000000000059004b000012bd0000c13d000000000006004b000012ce0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f0000000100200190000013670000613d0000001f01400039000000600210018f0000000301200029000000000021004b000000000200003900000001020040390000069d0010009c000005590000213d0000000100200190000005590000c13d000000400010043f000000200030008c000000520000413d00000003010000290000000001010433000000000001004b0000000002000039000000010200c039000000000021004b000000520000c13d000000000001004b00000af00000613d0000000701000029000000000010043f0000000301000039000000200010043f00000000010004140000065b0010009c0000065b01008041000000c0011002100000069b011001c70000801002000039196719620000040f0000000100200190000000520000613d000000000101043b000400000001001d000000400100043d000000400210003900000008030000290000000000320435000000200210003900000006030000290000000000320435000000400300003900000000003104350000069e0010009c000005590000213d0000006003100039000000400030043f0000065b0020009c0000065b02008041000000400220021000000000010104330000065b0010009c0000065b010080410000006001100210000000000121019f00000000020004140000065b0020009c0000065b02008041000000c002200210000000000112019f0000069f011001c70000801002000039196719620000040f0000000100200190000000520000613d000000000101043b000000000010043f0000000401000029000000200010043f00000000010004140000065b0010009c0000065b01008041000000c0011002100000069b011001c70000801002000039196719620000040f0000000100200190000000520000613d000000000101043b0000000502000029000000000021041b000000400100043d00000000002104350000065b0010009c0000065b01008041000000400110021000000000020004140000065b0020009c0000065b02008041000000c002200210000000000112019f000006a0011001c70000800d020000390000000403000039000006a10400004100000007050000290000000606000029000000080700002900000edd0000013d0000001f0530018f0000065d06300198000000400200043d000000000462001900000b7e0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b0000133e0000c13d00000b7e0000013d0000001f0530018f0000065d06300198000000400200043d000000000462001900000b7e0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b0000134a0000c13d00000b7e0000013d0000001f0530018f0000065d06300198000000400200043d000000000462001900000b7e0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000013560000c13d00000b7e0000013d0000001f0530018f0000065d06300198000000400200043d000000000462001900000b7e0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000013620000c13d00000b7e0000013d0000001f0530018f0000065d06300198000000400200043d000000000462001900000b7e0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b0000136e0000c13d00000b7e0000013d000006aa01000041000000000010043f0000003201000039000000040010043f000006ab010000410000196900010430000000400100043d0000004402100039000006b403000041000013860000013d0000004402100039000006a603000041000000000032043500000024021000390000001403000039000007b00000013d000000400100043d0000004402100039000006bb03000041000000000032043500000024021000390000001a03000039000007b00000013d000000400100043d0000004402100039000006b103000041000010570000013d00000002030000290000065b0030009c0000065b0300804100000040033002100000065b0010009c0000065b01008041000000c001100210000000000131019f0000069c011001c7196719620000040f00000060031002700000065b03300197000000200030008c000000200400003900000000040340190000001f0640018f00000020074001900000000205700029000013a70000613d000000000801034f0000000209000029000000008a08043c0000000009a90436000000000059004b000013a30000c13d000000000006004b000013b40000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f0000000100200190000016060000613d0000001f01400039000000600210018f0000000201200029000000000021004b000000000200003900000001020040390000069d0010009c000005590000213d0000000100200190000005590000c13d000000400010043f000000200030008c000000520000413d00000002010000290000000001010433000000000001004b0000000002000039000000010200c039000000000021004b000000520000c13d000000000001004b00000af00000613d0000000701000029000000000010043f0000000401000039000000200010043f00000000010004140000065b0010009c0000065b01008041000000c0011002100000069b011001c70000801002000039196719620000040f0000000100200190000000520000613d000000000101043b000400000001001d000000400100043d0000006002100039000006b203000041000000000032043500000040021000390000000803000029000000000032043500000020021000390000000603000029000000000032043500000047030000390000000000310435000006a50010009c000005590000213d0000008003100039000000400030043f0000065b0020009c0000065b02008041000000400220021000000000010104330000065b0010009c0000065b010080410000006001100210000000000121019f00000000020004140000065b0020009c0000065b02008041000000c002200210000000000112019f0000069f011001c70000801002000039196719620000040f0000000100200190000000520000613d000000000101043b000000000010043f0000000401000029000000200010043f00000000010004140000065b0010009c0000065b01008041000000c0011002100000069b011001c70000801002000039196719620000040f0000000100200190000000520000613d000000000101043b000200000001001d00000003010000290000000001010433000400000001001d0000069d0010009c000005590000213d0000000202000029000000000302041a0000000401000029000000000012041b000100000003001d000000000031004b0000142d0000813d0000000201000029000000000010043f00000000010004140000065b0010009c0000065b01008041000000c001100210000006a0011001c70000801002000039196719620000040f0000000100200190000000520000613d000000000201043b00000004012000290000000102200029000000000021004b0000142d0000813d000000000001041b0000000101100039000000000021004b000014290000413d0000000201000029000000000010043f00000000010004140000065b0010009c0000065b01008041000000c001100210000006a0011001c70000801002000039196719620000040f0000000100200190000000520000613d000000000101043b000000040000006b000014430000613d0000000002000019000000050300002900000000041200190000000035030434000000000054041b0000000102200039000000040020006c0000143d0000413d000000400100043d000000200200003900000000022104360000000303000029000000000303043300000000003204350000004002100039000000000003004b000014540000613d000000000400001900000005060000290000000065060434000500000006001d00000000025204360000000104400039000000000034004b0000144d0000413d00000000021200490000065b0020009c0000065b0200804100000060022002100000065b0010009c0000065b010080410000004001100210000000000112019f0000000002000414000015fd0000013d00000002030000290000065b0030009c0000065b0300804100000040033002100000065b0010009c0000065b01008041000000c001100210000000000131019f0000069c011001c7196719620000040f00000060031002700000065b03300197000000200030008c000000200400003900000000040340190000001f0640018f00000020074001900000000205700029000014770000613d000000000801034f0000000209000029000000008a08043c0000000009a90436000000000059004b000014730000c13d000000000006004b000014840000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f0000000100200190000016120000613d0000001f01400039000000600210018f0000000201200029000000000021004b000000000200003900000001020040390000069d0010009c000005590000213d0000000100200190000005590000c13d000000400010043f000000200030008c000000520000413d00000002010000290000000001010433000000000001004b0000000002000039000000010200c039000000000021004b000000520000c13d000000000001004b00000af00000613d0000000701000029000000000010043f0000000401000039000000200010043f00000000010004140000065b0010009c0000065b01008041000000c0011002100000069b011001c70000801002000039196719620000040f0000000100200190000000520000613d000000000101043b000400000001001d000000400100043d0000006002100039000006b203000041000000000032043500000040021000390000000803000029000000000032043500000020021000390000000603000029000000000032043500000047030000390000000000310435000006a50010009c000005590000213d0000008003100039000000400030043f0000065b0020009c0000065b02008041000000400220021000000000010104330000065b0010009c0000065b010080410000006001100210000000000121019f00000000020004140000065b0020009c0000065b02008041000000c002200210000000000112019f0000069f011001c70000801002000039196719620000040f0000000100200190000000520000613d000000000101043b000000000010043f0000000401000029000000200010043f00000000010004140000065b0010009c0000065b01008041000000c0011002100000069b011001c70000801002000039196719620000040f0000000100200190000000520000613d000000000101043b000200000001001d00000003010000290000000001010433000400000001001d0000069d0010009c000005590000213d0000000202000029000000000302041a0000000401000029000000000012041b000100000003001d000000000031004b000014fd0000813d0000000201000029000000000010043f00000000010004140000065b0010009c0000065b01008041000000c001100210000006a0011001c70000801002000039196719620000040f0000000100200190000000520000613d000000000201043b00000004012000290000000102200029000000000021004b000014fd0000813d000000000001041b0000000101100039000000000021004b000014f90000413d0000000201000029000000000010043f00000000010004140000065b0010009c0000065b01008041000000c001100210000006a0011001c70000801002000039196719620000040f0000000100200190000000520000613d000000000101043b000000040000006b000015130000613d0000000002000019000000050300002900000000041200190000000035030434000000000054041b0000000102200039000000040020006c0000150d0000413d000000400100043d000000200200003900000000022104360000000303000029000000000303043300000000003204350000004002100039000000000003004b000015240000613d000000000400001900000005060000290000000065060434000500000006001d00000000025204360000000104400039000000000034004b0000151d0000413d00000000021200490000065b0020009c0000065b0200804100000060022002100000065b0010009c0000065b010080410000004001100210000000000112019f0000000002000414000015fd0000013d00000002030000290000065b0030009c0000065b0300804100000040033002100000065b0010009c0000065b01008041000000c001100210000000000131019f0000069c011001c7196719620000040f00000060031002700000065b03300197000000200030008c000000200400003900000000040340190000001f0640018f00000020074001900000000205700029000015470000613d000000000801034f0000000209000029000000008a08043c0000000009a90436000000000059004b000015430000c13d000000000006004b000015540000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00000001002001900000161e0000613d0000001f01400039000000600210018f0000000201200029000000000021004b000000000200003900000001020040390000069d0010009c000005590000213d0000000100200190000005590000c13d000000400010043f000000200030008c000000520000413d00000002010000290000000001010433000000000001004b0000000002000039000000010200c039000000000021004b000000520000c13d000000000001004b00000af00000613d0000000701000029000000000010043f0000000401000039000000200010043f00000000010004140000065b0010009c0000065b01008041000000c0011002100000069b011001c70000801002000039196719620000040f0000000100200190000000520000613d000000000101043b000400000001001d000000400100043d0000006002100039000006b203000041000000000032043500000040021000390000000803000029000000000032043500000020021000390000000603000029000000000032043500000047030000390000000000310435000006a50010009c000005590000213d0000008003100039000000400030043f0000065b0020009c0000065b02008041000000400220021000000000010104330000065b0010009c0000065b010080410000006001100210000000000121019f00000000020004140000065b0020009c0000065b02008041000000c002200210000000000112019f0000069f011001c70000801002000039196719620000040f0000000100200190000000520000613d000000000101043b000000000010043f0000000401000029000000200010043f00000000010004140000065b0010009c0000065b01008041000000c0011002100000069b011001c70000801002000039196719620000040f0000000100200190000000520000613d000000000101043b000200000001001d00000003010000290000000001010433000400000001001d0000069d0010009c000005590000213d0000000202000029000000000302041a0000000401000029000000000012041b000100000003001d000000000031004b000015cd0000813d0000000201000029000000000010043f00000000010004140000065b0010009c0000065b01008041000000c001100210000006a0011001c70000801002000039196719620000040f0000000100200190000000520000613d000000000201043b00000004012000290000000102200029000000000021004b000015cd0000813d000000000001041b0000000101100039000000000021004b000015c90000413d0000000201000029000000000010043f00000000010004140000065b0010009c0000065b01008041000000c001100210000006a0011001c70000801002000039196719620000040f0000000100200190000000520000613d000000000101043b000000040000006b000015e30000613d0000000002000019000000050300002900000000041200190000000035030434000000000054041b0000000102200039000000040020006c000015dd0000413d000000400100043d000000200200003900000000022104360000000303000029000000000303043300000000003204350000004002100039000000000003004b000015f40000613d000000000400001900000005060000290000000065060434000500000006001d00000000025204360000000104400039000000000034004b000015ed0000413d00000000021200490000065b0020009c0000065b0200804100000060022002100000065b0010009c0000065b010080410000004001100210000000000112019f00000000020004140000065b0020009c0000065b02008041000000c002200210000000000121019f0000069f011001c70000800d020000390000000403000039000006b304000041000013330000013d0000001f0530018f0000065d06300198000000400200043d000000000462001900000b7e0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b0000160d0000c13d00000b7e0000013d0000001f0530018f0000065d06300198000000400200043d000000000462001900000b7e0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000016190000c13d00000b7e0000013d0000001f0530018f0000065d06300198000000400200043d000000000462001900000b7e0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000016250000c13d00000b7e0000013d0000000301000029000000200010008c000016490000413d0000000501000029000000000010043f00000000010004140000065b0010009c0000065b01008041000000c001100210000006a0011001c70000801002000039196719620000040f0000000100200190000000520000613d00000004030000290000001f023000390000000502200270000000200030008c0000000002004019000000000301043b00000003010000290000001f01100039000000050110027000000000011300190000000002230019000000000012004b000016490000813d000000000002041b0000000102200039000000000012004b000016450000413d00000004010000290000001f0010008c0000165d0000a13d0000000501000029000000000010043f00000000010004140000065b0010009c0000065b01008041000000c001100210000006a0011001c70000801002000039196719620000040f0000000100200190000000520000613d000000200200008a0000000402200180000000000101043b000016690000c13d000000a003000039000016770000013d000000040000006b0000000001000019000016610000613d000000a00100043d00000004040000290000000302400210000006c70220027f000006c702200167000000000121016f0000000102400210000000000121019f000016840000013d000000010320008a0000000503300270000000000331001900000020040000390000000103300039000000000504001900000080044000390000000004040433000000000041041b00000020045000390000000101100039000000000031004b0000166e0000c13d000000a003500039000000040020006c000016810000813d00000004020000290000000302200210000000f80220018f000006c70220027f000006c7022001670000000003030433000000000223016f000000000021041b0000000401000029000000010110021000000001011001bf0000000502000029000000000012041b0000002002000039000000400100043d0000000003210436000000800200043d0000000000230435000006c5052001970000001f0420018f0000004003100039000000a10030008c000016a00000413d000000000005004b0000169b0000613d000000000743001900000080064001bf000000200770008a0000000008570019000000000956001900000000090904330000000000980435000000200550008c000016950000c13d000000000004004b000016b60000613d000000a0050000390000000006030019000016ac0000013d0000000006530019000000000005004b000016a90000613d000000a007000039000000000803001900000000790704340000000008980436000000000068004b000016a50000c13d000000000004004b000016b60000613d000000a0055000390000000304400210000000000706043300000000074701cf000000000747022f00000000050504330000010004400089000000000545022f00000000044501cf000000000474019f00000000004604350000001f04200039000006c5044001970000000002320019000000000002043500000040024000390000065b0020009c0000065b0200804100000060022002100000065b0010009c0000065b010080410000004001100210000000000112019f00000000020004140000065b0020009c0000065b02008041000000c002200210000000000121019f0000069f011001c70000800d020000390000000403000039000006a90400004100000006050000290000000706000029000013350000013d000006c80010009c000016da0000213d000000630010008c000016da0000a13d00000002030003670000000401300370000000000101043b0000002402300370000000000202043b0000004403300370000000000303043b000000000001042d00000000010000190000196900010430000000080020008c000016e00000813d0000000001210436000000000001042d000006aa01000041000000000010043f0000002101000039000000040010043f000006ab010000410000196900010430000006c80010009c000016f00000213d000000430010008c000016f00000a13d00000002020003670000000401200370000000000101043b0000002402200370000000000202043b000000000001042d000000000100001900001969000104300000001f02200039000006c5022001970000000001120019000000000021004b000000000200003900000001020040390000069d0010009c000016fe0000213d0000000100200190000016fe0000c13d000000400010043f000000000001042d000006aa01000041000000000010043f0000004101000039000000040010043f000006ab0100004100001969000104300000002003000039000000000331043600000000420204340000000000230435000006c5062001970000001f0520018f0000004001100039000000000014004b0000171d0000813d000000000006004b000017190000613d00000000085400190000000007510019000000200770008a000000200880008a0000000009670019000000000a680019000000000a0a04330000000000a90435000000200660008c000017130000c13d000000000005004b000017330000613d0000000007010019000017290000013d0000000007610019000000000006004b000017260000613d00000000080400190000000009010019000000008a0804340000000009a90436000000000079004b000017220000c13d000000000005004b000017330000613d00000000046400190000000305500210000000000607043300000000065601cf000000000656022f00000000040404330000010005500089000000000454022f00000000045401cf000000000464019f0000000000470435000000000421001900000000000404350000001f02200039000006c5022001970000000001210019000000000001042d0002000000000002000000000301041a000000010430019000000001063002700000007f0660618f0000001f0060008c00000000050000390000000105002039000000000054004b0000176a0000c13d0000000005620436000000000004004b000017610000613d000200000006001d000100000005001d000000000010043f00000000010004140000065b0010009c0000065b01008041000000c001100210000006a0011001c70000801002000039196719620000040f0000000100200190000017700000613d0000000206000029000000000006004b000017680000613d000000000201043b000000000100001900000001050000290000000003150019000000000402041a000000000043043500000001022000390000002001100039000000000061004b000017580000413d0000000001150019000000000001042d000006c6013001970000000000150435000000000006004b000000200100003900000000010060390000000001150019000000000001042d0000000101000029000000000001042d000006aa01000041000000000010043f0000002201000039000000040010043f000006ab01000041000019690001043000000000010000190000196900010430000000000001004b000017750000613d000000000001042d000000400100043d0000004402100039000006c1030000410000000000320435000000240210003900000015030000390000000000320435000006a70200004100000000002104350000000402100039000000200300003900000000003204350000065b0010009c0000065b010080410000004001100210000006a8011001c70000196900010430000000000010043f0000000601000039000000200010043f00000000010004140000065b0010009c0000065b01008041000000c0011002100000069b011001c70000801002000039196719620000040f00000001002001900000179a0000613d000000000101043b000000000101041a000000000001004b0000179c0000613d000000ff0110018f000000080010008c000017ad0000813d000000000001042d00000000010000190000196900010430000000400100043d0000004402100039000006c2030000410000000000320435000000240210003900000013030000390000000000320435000006a70200004100000000002104350000000402100039000000200300003900000000003204350000065b0010009c0000065b010080410000004001100210000006a8011001c70000196900010430000006aa01000041000000000010043f0000002101000039000000040010043f000006ab010000410000196900010430000000000001004b000017b60000613d000000000001042d000000400100043d0000004402100039000006bc030000410000000000320435000000240210003900000015030000390000000000320435000006a70200004100000000002104350000000402100039000000200300003900000000003204350000065b0010009c0000065b010080410000004001100210000006a8011001c70000196900010430000000400300043d0000006004300039000006b205000041000000000054043500000040043000390000000000240435000000470200003900000000022304360000000000120435000006c90030009c000017e80000813d0000008001300039000000400010043f0000065b0020009c0000065b02008041000000400120021000000000020304330000065b0020009c0000065b020080410000006002200210000000000112019f00000000020004140000065b0020009c0000065b02008041000000c002200210000000000112019f0000069f011001c70000801002000039196719620000040f0000000100200190000017ee0000613d000000000101043b000000000001042d000006aa01000041000000000010043f0000004101000039000000040010043f000006ab01000041000019690001043000000000010000190000196900010430000000400300043d00000040043000390000000000240435000000400200003900000000022304360000000000120435000006ca0030009c0000180e0000813d0000006001300039000000400010043f0000065b0020009c0000065b02008041000000400120021000000000020304330000065b0020009c0000065b020080410000006002200210000000000112019f00000000020004140000065b0020009c0000065b02008041000000c002200210000000000112019f0000069f011001c70000801002000039196719620000040f0000000100200190000018140000613d000000000101043b000000000001042d000006aa01000041000000000010043f0000004101000039000000040010043f000006ab01000041000019690001043000000000010000190000196900010430000000000001004b000018190000613d000000000001042d000000400100043d0000004402100039000006b8030000410000000000320435000000240210003900000014030000390000000000320435000006a70200004100000000002104350000000402100039000000200300003900000000003204350000065b0010009c0000065b010080410000004001100210000006a8011001c70000196900010430000000000001004b0000182d0000613d000000000001042d000000400100043d0000004402100039000006b7030000410000000000320435000000240210003900000012030000390000000000320435000006a70200004100000000002104350000000402100039000000200300003900000000003204350000065b0010009c0000065b010080410000004001100210000006a8011001c700001969000104300003000000000002000200000003001d000300000002001d000000000010043f0000000301000039000000200010043f00000000010004140000065b0010009c0000065b01008041000000c0011002100000069b011001c70000801002000039196719620000040f00000001002001900000187e0000613d000000000101043b000100000001001d000000400100043d00000040021000390000000203000029000000000032043500000020021000390000000303000029000000000032043500000040030000390000000000310435000006ca0010009c000018800000813d0000006003100039000000400030043f0000065b0020009c0000065b02008041000000400220021000000000010104330000065b0010009c0000065b010080410000006001100210000000000121019f00000000020004140000065b0020009c0000065b02008041000000c002200210000000000112019f0000069f011001c70000801002000039196719620000040f00000001002001900000187e0000613d000000000101043b000000000010043f0000000101000029000000200010043f00000000010004140000065b0010009c0000065b01008041000000c0011002100000069b011001c70000801002000039196719620000040f00000001002001900000187e0000613d000000000101043b000000000101041a000000000001042d00000000010000190000196900010430000006aa01000041000000000010043f0000004101000039000000040010043f000006ab010000410000196900010430000000000001004b000018890000613d000000000001042d000000400100043d0000004402100039000006a6030000410000000000320435000000240210003900000014030000390000000000320435000006a70200004100000000002104350000000402100039000000200300003900000000003204350000065b0010009c0000065b010080410000004001100210000006a8011001c70000196900010430000000000001004b0000189d0000613d000000000001042d000000400100043d0000004402100039000006b5030000410000000000320435000000240210003900000015030000390000000000320435000006a70200004100000000002104350000000402100039000000200300003900000000003204350000065b0010009c0000065b010080410000004001100210000006a8011001c70000196900010430000000000010043f0000000601000039000000200010043f00000000010004140000065b0010009c0000065b01008041000000c0011002100000069b011001c70000801002000039196719620000040f0000000100200190000018c00000613d000000000101043b000000000101041a000000000001004b0000000001000039000000010100c039000000000001042d0000000001000019000019690001043000020000000000020000000102000039000000000202041a000000400b00043d000006980300004100000000003b04350000000403b00039000006990400004100000000004304350000065e051001970000002401b000390000000000510435000000000100041400000008022002700000065e02200197000000040020008c000018d80000c13d0000000103000031000000200030008c00000020040000390000000004034019000019050000013d000100000005001d0000065b00b0009c0000065b0300004100000000030b401900000040033002100000065b0010009c0000065b01008041000000c001100210000000000131019f0000069c011001c700020000000b001d196719620000040f000000020b00002900000060031002700000065b03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b0019000018f40000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b000018f00000c13d000000000006004b000019010000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00000001002001900000192a0000613d00000001050000290000001f01400039000000600210018f0000000001b20019000000000021004b000000000200003900000001020040390000069d0010009c0000191d0000213d00000001002001900000191d0000c13d000000400010043f0000001f0030008c0000191b0000a13d00000000010b0433000000000001004b0000000002000039000000010200c039000000000021004b0000191b0000c13d000000000001004b000019230000613d000000000001042d00000000010000190000196900010430000006aa01000041000000000010043f0000004101000039000000040010043f000006ab010000410000196900010430000006a201000041000000000010043f000000040050043f0000069901000041000000240010043f0000069c0100004100001969000104300000001f0530018f0000065d06300198000000400200043d0000000004620019000019350000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000019310000c13d000000000005004b000019420000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f000000000014043500000060013002100000065b0020009c0000065b020080410000004002200210000000000112019f00001969000104300000065b0010009c0000065b0100804100000040011002100000065b0020009c0000065b020080410000006002200210000000000112019f00000000020004140000065b0020009c0000065b02008041000000c002200210000000000112019f0000069f011001c70000801002000039196719620000040f00000001002001900000195b0000613d000000000101043b000000000001042d0000000001000019000019690001043000001960002104210000000102000039000000000001042d0000000002000019000000000001042d00001965002104230000000102000039000000000001042d0000000002000019000000000001042d0000196700000432000019680001042e00001969000104300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff00000000000000000000000000000000000000000000000000000001ffffffe000000000000000000000000000000000000000000000000000000000ffffffe0000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffff009750ad73d9615445751d3fd0a61d867ae6a6dd1dfb5f65ef07fe835b7d5ca6bd0000000200000000000000000000000000000040000001000000000000000000000000000000000000000000000000000000000000000000000000007b53b4e500000000000000000000000000000000000000000000000000000000bb44a24700000000000000000000000000000000000000000000000000000000e81b22e900000000000000000000000000000000000000000000000000000000eb57676400000000000000000000000000000000000000000000000000000000eb57676500000000000000000000000000000000000000000000000000000000ed022ebd00000000000000000000000000000000000000000000000000000000f2c071ca00000000000000000000000000000000000000000000000000000000e81b22ea00000000000000000000000000000000000000000000000000000000e95c048700000000000000000000000000000000000000000000000000000000bfa2ccd100000000000000000000000000000000000000000000000000000000bfa2ccd200000000000000000000000000000000000000000000000000000000cf9629fb00000000000000000000000000000000000000000000000000000000dd898b2f00000000000000000000000000000000000000000000000000000000bb44a24800000000000000000000000000000000000000000000000000000000bded4d6a000000000000000000000000000000000000000000000000000000008a4bcc8f00000000000000000000000000000000000000000000000000000000a1b9224b00000000000000000000000000000000000000000000000000000000a1b9224c00000000000000000000000000000000000000000000000000000000a537812d00000000000000000000000000000000000000000000000000000000ad46d359000000000000000000000000000000000000000000000000000000008a4bcc90000000000000000000000000000000000000000000000000000000009b29de69000000000000000000000000000000000000000000000000000000008129fc1b000000000000000000000000000000000000000000000000000000008129fc1c0000000000000000000000000000000000000000000000000000000089f10634000000000000000000000000000000000000000000000000000000007b53b4e6000000000000000000000000000000000000000000000000000000007e08cadb000000000000000000000000000000000000000000000000000000002a90d0e0000000000000000000000000000000000000000000000000000000005d1ca630000000000000000000000000000000000000000000000000000000006516896f00000000000000000000000000000000000000000000000000000000651689700000000000000000000000000000000000000000000000000000000069e6c9a20000000000000000000000000000000000000000000000000000000077d82b49000000000000000000000000000000000000000000000000000000005d1ca6310000000000000000000000000000000000000000000000000000000065013ac200000000000000000000000000000000000000000000000000000000410ad1d800000000000000000000000000000000000000000000000000000000410ad1d9000000000000000000000000000000000000000000000000000000004b334ed1000000000000000000000000000000000000000000000000000000005c975abb000000000000000000000000000000000000000000000000000000002a90d0e1000000000000000000000000000000000000000000000000000000003a09b384000000000000000000000000000000000000000000000000000000000d0a29d40000000000000000000000000000000000000000000000000000000016c38b3b0000000000000000000000000000000000000000000000000000000016c38b3c000000000000000000000000000000000000000000000000000000001c41a3040000000000000000000000000000000000000000000000000000000027f32483000000000000000000000000000000000000000000000000000000000d0a29d50000000000000000000000000000000000000000000000000000000013b8c9700000000000000000000000000000000000000000000000000000000007fef6320000000000000000000000000000000000000000000000000000000007fef633000000000000000000000000000000000000000000000000000000000a41b90f000000000000000000000000000000000000000000000000000000000462dec70000000000000000000000000000000000000000000000000000000007b920aac36dd7ea00000000000000000000000000000000000000000000000000000000d3dc2a3a14cbd0cdbf3069fc3927e48506f271b9dda2c21625b93e6a99d3eb53000000000000000000000000000000000000004400000080000000000000000002000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000044000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff000000000000000000000000000000000000000000000000ffffffffffffff9f02000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000020000000000000000000000000c62c8c68b4add47f75c22ad075081b4dcfe73ff7e90d289db22f3003ee84d1e20161a64a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000008000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff7f436f6c756d6e206973206e6f7420535452494e4700000000000000000000000008c379a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006400000000000000000000000020aa77deb2302bec4693ec5f0d04ace68d8d630d63a850cfd7731c79f0745b574e487b71000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024000000000000000000000000241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b08ffffffffffffffffffffff0000000000000000000000000000000000000000ffa4b914810000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0436f6c756d6e206973206e6f7420424f4f4c41525241590000000000000000005f5f61727261790000000000000000000000000000000000000000000000000042c99f93f0c9652750df6175abcb7b41e4d4c61c0648a2b1441c322e0a7e7f6f436f6c756d6e206973206e6f742055494e543235364152524159000000000000436f6c756d6e206973206e6f742055494e543235360000000000000000000000fc425f2263d0df187444b70e47283d622c70181c5baebb1306a01edba1ce184c436f6c756d6e206973206e6f7420424f4f4c0000000000000000000000000000436f6c756d6e206973206e6f7420494e543235360000000000000000000000005c975abb000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000800000000000000000436f6c756d6e206973206e6f7420414444524553534152524159000000000000436f6c756d6e206973206e6f742042595445533332000000000000000000000065d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2585db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa5061757361626c653a206e6f7420706175736564000000000000000000000000436f6c756d6e206973206e6f7420414444524553530000000000000000000000436f6c756d6e2074797065206e6f742073657400000000000000000000000000436f6c756d6e207479706520616c7265616479207365740000000000000000009500c6320e67d6c188fdf76e2f11f264e92c76098d43a228cb8f08c2f5d688a8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000ffffffffffffff80000000000000000000000000000000000000000000000000ffffffffffffffa0000000000000000000000000000000000000000000000000000000000000000017c47e282fbafeb8e5febcbd1bb47d9bc77e2eb11c57e0f8fdf42e67905a30d9

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000487f346df1bcaca0366d4841d71941b46c863593

-----Decoded View---------------
Arg [0] : gameRegistryAddress (address): 0x487F346Df1bCaCA0366d4841D71941B46C863593

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000487f346df1bcaca0366d4841d71941b46c863593


Block Transaction Gas Used Reward
view all blocks produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
[ 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.