{"request":{"id":49064,"contractAddress":"0x906bcf6c92ed1b30aa453c69eb40aedbb3d5b3a5","codeFormat":"solidity-standard-json-input","sourceCode":{"language":"Solidity","settings":{"detectMissingLibraries":false,"enableEraVMExtensions":false,"evmVersion":"paris","forceEVMLA":false,"libraries":{},"optimizer":{"enabled":true,"mode":"3"},"outputSelection":{"*":{"":["ast"],"*":["abi","evm.methodIdentifiers","metadata"]}}},"sources":{"@openzeppelin/contracts/access/AccessControl.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (access/AccessControl.sol)\n\npragma solidity ^0.8.20;\n\nimport {IAccessControl} from \"./IAccessControl.sol\";\nimport {Context} from \"../utils/Context.sol\";\nimport {IERC165, ERC165} from \"../utils/introspection/ERC165.sol\";\n\n/**\n * @dev Contract module that allows children to implement role-based access\n * control mechanisms. This is a lightweight version that doesn't allow enumerating role\n * members except through off-chain means by accessing the contract event logs. Some\n * applications may benefit from on-chain enumerability, for those cases see\n * {AccessControlEnumerable}.\n *\n * Roles are referred to by their `bytes32` identifier. These should be exposed\n * in the external API and be unique. The best way to achieve this is by\n * using `public constant` hash digests:\n *\n * ```solidity\n * bytes32 public constant MY_ROLE = keccak256(\"MY_ROLE\");\n * ```\n *\n * Roles can be used to represent a set of permissions. To restrict access to a\n * function call, use {hasRole}:\n *\n * ```solidity\n * function foo() public {\n *     require(hasRole(MY_ROLE, msg.sender));\n *     ...\n * }\n * ```\n *\n * Roles can be granted and revoked dynamically via the {grantRole} and\n * {revokeRole} functions. Each role has an associated admin role, and only\n * accounts that have a role's admin role can call {grantRole} and {revokeRole}.\n *\n * By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means\n * that only accounts with this role will be able to grant or revoke other\n * roles. More complex role relationships can be created by using\n * {_setRoleAdmin}.\n *\n * WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to\n * grant and revoke this role. Extra precautions should be taken to secure\n * accounts that have been granted it. We recommend using {AccessControlDefaultAdminRules}\n * to enforce additional security measures for this role.\n */\nabstract contract AccessControl is Context, IAccessControl, ERC165 {\n    struct RoleData {\n        mapping(address account => bool) hasRole;\n        bytes32 adminRole;\n    }\n\n    mapping(bytes32 role => RoleData) private _roles;\n\n    bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00;\n\n    /**\n     * @dev Modifier that checks that an account has a specific role. Reverts\n     * with an {AccessControlUnauthorizedAccount} error including the required role.\n     */\n    modifier onlyRole(bytes32 role) {\n        _checkRole(role);\n        _;\n    }\n\n    /// @inheritdoc IERC165\n    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n        return interfaceId == type(IAccessControl).interfaceId || super.supportsInterface(interfaceId);\n    }\n\n    /**\n     * @dev Returns `true` if `account` has been granted `role`.\n     */\n    function hasRole(bytes32 role, address account) public view virtual returns (bool) {\n        return _roles[role].hasRole[account];\n    }\n\n    /**\n     * @dev Reverts with an {AccessControlUnauthorizedAccount} error if `_msgSender()`\n     * is missing `role`. Overriding this function changes the behavior of the {onlyRole} modifier.\n     */\n    function _checkRole(bytes32 role) internal view virtual {\n        _checkRole(role, _msgSender());\n    }\n\n    /**\n     * @dev Reverts with an {AccessControlUnauthorizedAccount} error if `account`\n     * is missing `role`.\n     */\n    function _checkRole(bytes32 role, address account) internal view virtual {\n        if (!hasRole(role, account)) {\n            revert AccessControlUnauthorizedAccount(account, role);\n        }\n    }\n\n    /**\n     * @dev Returns the admin role that controls `role`. See {grantRole} and\n     * {revokeRole}.\n     *\n     * To change a role's admin, use {_setRoleAdmin}.\n     */\n    function getRoleAdmin(bytes32 role) public view virtual returns (bytes32) {\n        return _roles[role].adminRole;\n    }\n\n    /**\n     * @dev Grants `role` to `account`.\n     *\n     * If `account` had not been already granted `role`, emits a {RoleGranted}\n     * event.\n     *\n     * Requirements:\n     *\n     * - the caller must have ``role``'s admin role.\n     *\n     * May emit a {RoleGranted} event.\n     */\n    function grantRole(bytes32 role, address account) public virtual onlyRole(getRoleAdmin(role)) {\n        _grantRole(role, account);\n    }\n\n    /**\n     * @dev Revokes `role` from `account`.\n     *\n     * If `account` had been granted `role`, emits a {RoleRevoked} event.\n     *\n     * Requirements:\n     *\n     * - the caller must have ``role``'s admin role.\n     *\n     * May emit a {RoleRevoked} event.\n     */\n    function revokeRole(bytes32 role, address account) public virtual onlyRole(getRoleAdmin(role)) {\n        _revokeRole(role, account);\n    }\n\n    /**\n     * @dev Revokes `role` from the calling account.\n     *\n     * Roles are often managed via {grantRole} and {revokeRole}: this function's\n     * purpose is to provide a mechanism for accounts to lose their privileges\n     * if they are compromised (such as when a trusted device is misplaced).\n     *\n     * If the calling account had been revoked `role`, emits a {RoleRevoked}\n     * event.\n     *\n     * Requirements:\n     *\n     * - the caller must be `callerConfirmation`.\n     *\n     * May emit a {RoleRevoked} event.\n     */\n    function renounceRole(bytes32 role, address callerConfirmation) public virtual {\n        if (callerConfirmation != _msgSender()) {\n            revert AccessControlBadConfirmation();\n        }\n\n        _revokeRole(role, callerConfirmation);\n    }\n\n    /**\n     * @dev Sets `adminRole` as ``role``'s admin role.\n     *\n     * Emits a {RoleAdminChanged} event.\n     */\n    function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual {\n        bytes32 previousAdminRole = getRoleAdmin(role);\n        _roles[role].adminRole = adminRole;\n        emit RoleAdminChanged(role, previousAdminRole, adminRole);\n    }\n\n    /**\n     * @dev Attempts to grant `role` to `account` and returns a boolean indicating if `role` was granted.\n     *\n     * Internal function without access restriction.\n     *\n     * May emit a {RoleGranted} event.\n     */\n    function _grantRole(bytes32 role, address account) internal virtual returns (bool) {\n        if (!hasRole(role, account)) {\n            _roles[role].hasRole[account] = true;\n            emit RoleGranted(role, account, _msgSender());\n            return true;\n        } else {\n            return false;\n        }\n    }\n\n    /**\n     * @dev Attempts to revoke `role` from `account` and returns a boolean indicating if `role` was revoked.\n     *\n     * Internal function without access restriction.\n     *\n     * May emit a {RoleRevoked} event.\n     */\n    function _revokeRole(bytes32 role, address account) internal virtual returns (bool) {\n        if (hasRole(role, account)) {\n            _roles[role].hasRole[account] = false;\n            emit RoleRevoked(role, account, _msgSender());\n            return true;\n        } else {\n            return false;\n        }\n    }\n}\n"},"@openzeppelin/contracts/access/IAccessControl.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (access/IAccessControl.sol)\n\npragma solidity >=0.8.4;\n\n/**\n * @dev External interface of AccessControl declared to support ERC-165 detection.\n */\ninterface IAccessControl {\n    /**\n     * @dev The `account` is missing a role.\n     */\n    error AccessControlUnauthorizedAccount(address account, bytes32 neededRole);\n\n    /**\n     * @dev The caller of a function is not the expected one.\n     *\n     * NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\n     */\n    error AccessControlBadConfirmation();\n\n    /**\n     * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`\n     *\n     * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite\n     * {RoleAdminChanged} not being emitted to signal this.\n     */\n    event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);\n\n    /**\n     * @dev Emitted when `account` is granted `role`.\n     *\n     * `sender` is the account that originated the contract call. This account bears the admin role (for the granted role).\n     * Expected in cases where the role was granted using the internal {AccessControl-_grantRole}.\n     */\n    event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);\n\n    /**\n     * @dev Emitted when `account` is revoked `role`.\n     *\n     * `sender` is the account that originated the contract call:\n     *   - if using `revokeRole`, it is the admin role bearer\n     *   - if using `renounceRole`, it is the role bearer (i.e. `account`)\n     */\n    event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);\n\n    /**\n     * @dev Returns `true` if `account` has been granted `role`.\n     */\n    function hasRole(bytes32 role, address account) external view returns (bool);\n\n    /**\n     * @dev Returns the admin role that controls `role`. See {grantRole} and\n     * {revokeRole}.\n     *\n     * To change a role's admin, use {AccessControl-_setRoleAdmin}.\n     */\n    function getRoleAdmin(bytes32 role) external view returns (bytes32);\n\n    /**\n     * @dev Grants `role` to `account`.\n     *\n     * If `account` had not been already granted `role`, emits a {RoleGranted}\n     * event.\n     *\n     * Requirements:\n     *\n     * - the caller must have ``role``'s admin role.\n     */\n    function grantRole(bytes32 role, address account) external;\n\n    /**\n     * @dev Revokes `role` from `account`.\n     *\n     * If `account` had been granted `role`, emits a {RoleRevoked} event.\n     *\n     * Requirements:\n     *\n     * - the caller must have ``role``'s admin role.\n     */\n    function revokeRole(bytes32 role, address account) external;\n\n    /**\n     * @dev Revokes `role` from the calling account.\n     *\n     * Roles are often managed via {grantRole} and {revokeRole}: this function's\n     * purpose is to provide a mechanism for accounts to lose their privileges\n     * if they are compromised (such as when a trusted device is misplaced).\n     *\n     * If the calling account had been granted `role`, emits a {RoleRevoked}\n     * event.\n     *\n     * Requirements:\n     *\n     * - the caller must be `callerConfirmation`.\n     */\n    function renounceRole(bytes32 role, address callerConfirmation) external;\n}\n"},"@openzeppelin/contracts/interfaces/draft-IERC6093.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (interfaces/draft-IERC6093.sol)\npragma solidity >=0.8.4;\n\n/**\n * @dev Standard ERC-20 Errors\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens.\n */\ninterface IERC20Errors {\n    /**\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n     * @param sender Address whose tokens are being transferred.\n     * @param balance Current balance for the interacting account.\n     * @param needed Minimum amount required to perform a transfer.\n     */\n    error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);\n\n    /**\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\n     * @param sender Address whose tokens are being transferred.\n     */\n    error ERC20InvalidSender(address sender);\n\n    /**\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\n     * @param receiver Address to which tokens are being transferred.\n     */\n    error ERC20InvalidReceiver(address receiver);\n\n    /**\n     * @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers.\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\n     * @param allowance Amount of tokens a `spender` is allowed to operate with.\n     * @param needed Minimum amount required to perform a transfer.\n     */\n    error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed);\n\n    /**\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n     * @param approver Address initiating an approval operation.\n     */\n    error ERC20InvalidApprover(address approver);\n\n    /**\n     * @dev Indicates a failure with the `spender` to be approved. Used in approvals.\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\n     */\n    error ERC20InvalidSpender(address spender);\n}\n\n/**\n * @dev Standard ERC-721 Errors\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-721 tokens.\n */\ninterface IERC721Errors {\n    /**\n     * @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-20.\n     * Used in balance queries.\n     * @param owner Address of the current owner of a token.\n     */\n    error ERC721InvalidOwner(address owner);\n\n    /**\n     * @dev Indicates a `tokenId` whose `owner` is the zero address.\n     * @param tokenId Identifier number of a token.\n     */\n    error ERC721NonexistentToken(uint256 tokenId);\n\n    /**\n     * @dev Indicates an error related to the ownership over a particular token. Used in transfers.\n     * @param sender Address whose tokens are being transferred.\n     * @param tokenId Identifier number of a token.\n     * @param owner Address of the current owner of a token.\n     */\n    error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner);\n\n    /**\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\n     * @param sender Address whose tokens are being transferred.\n     */\n    error ERC721InvalidSender(address sender);\n\n    /**\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\n     * @param receiver Address to which tokens are being transferred.\n     */\n    error ERC721InvalidReceiver(address receiver);\n\n    /**\n     * @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\n     * @param tokenId Identifier number of a token.\n     */\n    error ERC721InsufficientApproval(address operator, uint256 tokenId);\n\n    /**\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n     * @param approver Address initiating an approval operation.\n     */\n    error ERC721InvalidApprover(address approver);\n\n    /**\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\n     */\n    error ERC721InvalidOperator(address operator);\n}\n\n/**\n * @dev Standard ERC-1155 Errors\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-1155 tokens.\n */\ninterface IERC1155Errors {\n    /**\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n     * @param sender Address whose tokens are being transferred.\n     * @param balance Current balance for the interacting account.\n     * @param needed Minimum amount required to perform a transfer.\n     * @param tokenId Identifier number of a token.\n     */\n    error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId);\n\n    /**\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\n     * @param sender Address whose tokens are being transferred.\n     */\n    error ERC1155InvalidSender(address sender);\n\n    /**\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\n     * @param receiver Address to which tokens are being transferred.\n     */\n    error ERC1155InvalidReceiver(address receiver);\n\n    /**\n     * @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\n     * @param owner Address of the current owner of a token.\n     */\n    error ERC1155MissingApprovalForAll(address operator, address owner);\n\n    /**\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n     * @param approver Address initiating an approval operation.\n     */\n    error ERC1155InvalidApprover(address approver);\n\n    /**\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\n     */\n    error ERC1155InvalidOperator(address operator);\n\n    /**\n     * @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\n     * Used in batch transfers.\n     * @param idsLength Length of the array of token identifiers\n     * @param valuesLength Length of the array of token amounts\n     */\n    error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength);\n}\n"},"@openzeppelin/contracts/token/ERC20/ERC20.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (token/ERC20/ERC20.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC20} from \"./IERC20.sol\";\nimport {IERC20Metadata} from \"./extensions/IERC20Metadata.sol\";\nimport {Context} from \"../../utils/Context.sol\";\nimport {IERC20Errors} from \"../../interfaces/draft-IERC6093.sol\";\n\n/**\n * @dev Implementation of the {IERC20} interface.\n *\n * This implementation is agnostic to the way tokens are created. This means\n * that a supply mechanism has to be added in a derived contract using {_mint}.\n *\n * TIP: For a detailed writeup see our guide\n * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\n * to implement supply mechanisms].\n *\n * The default value of {decimals} is 18. To change this, you should override\n * this function so it returns a different value.\n *\n * We have followed general OpenZeppelin Contracts guidelines: functions revert\n * instead returning `false` on failure. This behavior is nonetheless\n * conventional and does not conflict with the expectations of ERC-20\n * applications.\n */\nabstract contract ERC20 is Context, IERC20, IERC20Metadata, IERC20Errors {\n    mapping(address account => uint256) private _balances;\n\n    mapping(address account => mapping(address spender => uint256)) private _allowances;\n\n    uint256 private _totalSupply;\n\n    string private _name;\n    string private _symbol;\n\n    /**\n     * @dev Sets the values for {name} and {symbol}.\n     *\n     * Both values are immutable: they can only be set once during construction.\n     */\n    constructor(string memory name_, string memory symbol_) {\n        _name = name_;\n        _symbol = symbol_;\n    }\n\n    /**\n     * @dev Returns the name of the token.\n     */\n    function name() public view virtual returns (string memory) {\n        return _name;\n    }\n\n    /**\n     * @dev Returns the symbol of the token, usually a shorter version of the\n     * name.\n     */\n    function symbol() public view virtual returns (string memory) {\n        return _symbol;\n    }\n\n    /**\n     * @dev Returns the number of decimals used to get its user representation.\n     * For example, if `decimals` equals `2`, a balance of `505` tokens should\n     * be displayed to a user as `5.05` (`505 / 10 ** 2`).\n     *\n     * Tokens usually opt for a value of 18, imitating the relationship between\n     * Ether and Wei. This is the default value returned by this function, unless\n     * it's overridden.\n     *\n     * NOTE: This information is only used for _display_ purposes: it in\n     * no way affects any of the arithmetic of the contract, including\n     * {IERC20-balanceOf} and {IERC20-transfer}.\n     */\n    function decimals() public view virtual returns (uint8) {\n        return 18;\n    }\n\n    /// @inheritdoc IERC20\n    function totalSupply() public view virtual returns (uint256) {\n        return _totalSupply;\n    }\n\n    /// @inheritdoc IERC20\n    function balanceOf(address account) public view virtual returns (uint256) {\n        return _balances[account];\n    }\n\n    /**\n     * @dev See {IERC20-transfer}.\n     *\n     * Requirements:\n     *\n     * - `to` cannot be the zero address.\n     * - the caller must have a balance of at least `value`.\n     */\n    function transfer(address to, uint256 value) public virtual returns (bool) {\n        address owner = _msgSender();\n        _transfer(owner, to, value);\n        return true;\n    }\n\n    /// @inheritdoc IERC20\n    function allowance(address owner, address spender) public view virtual returns (uint256) {\n        return _allowances[owner][spender];\n    }\n\n    /**\n     * @dev See {IERC20-approve}.\n     *\n     * NOTE: If `value` is the maximum `uint256`, the allowance is not updated on\n     * `transferFrom`. This is semantically equivalent to an infinite approval.\n     *\n     * Requirements:\n     *\n     * - `spender` cannot be the zero address.\n     */\n    function approve(address spender, uint256 value) public virtual returns (bool) {\n        address owner = _msgSender();\n        _approve(owner, spender, value);\n        return true;\n    }\n\n    /**\n     * @dev See {IERC20-transferFrom}.\n     *\n     * Skips emitting an {Approval} event indicating an allowance update. This is not\n     * required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve].\n     *\n     * NOTE: Does not update the allowance if the current allowance\n     * is the maximum `uint256`.\n     *\n     * Requirements:\n     *\n     * - `from` and `to` cannot be the zero address.\n     * - `from` must have a balance of at least `value`.\n     * - the caller must have allowance for ``from``'s tokens of at least\n     * `value`.\n     */\n    function transferFrom(address from, address to, uint256 value) public virtual returns (bool) {\n        address spender = _msgSender();\n        _spendAllowance(from, spender, value);\n        _transfer(from, to, value);\n        return true;\n    }\n\n    /**\n     * @dev Moves a `value` amount of tokens from `from` to `to`.\n     *\n     * This internal function is equivalent to {transfer}, and can be used to\n     * e.g. implement automatic token fees, slashing mechanisms, etc.\n     *\n     * Emits a {Transfer} event.\n     *\n     * NOTE: This function is not virtual, {_update} should be overridden instead.\n     */\n    function _transfer(address from, address to, uint256 value) internal {\n        if (from == address(0)) {\n            revert ERC20InvalidSender(address(0));\n        }\n        if (to == address(0)) {\n            revert ERC20InvalidReceiver(address(0));\n        }\n        _update(from, to, value);\n    }\n\n    /**\n     * @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from`\n     * (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding\n     * this function.\n     *\n     * Emits a {Transfer} event.\n     */\n    function _update(address from, address to, uint256 value) internal virtual {\n        if (from == address(0)) {\n            // Overflow check required: The rest of the code assumes that totalSupply never overflows\n            _totalSupply += value;\n        } else {\n            uint256 fromBalance = _balances[from];\n            if (fromBalance < value) {\n                revert ERC20InsufficientBalance(from, fromBalance, value);\n            }\n            unchecked {\n                // Overflow not possible: value <= fromBalance <= totalSupply.\n                _balances[from] = fromBalance - value;\n            }\n        }\n\n        if (to == address(0)) {\n            unchecked {\n                // Overflow not possible: value <= totalSupply or value <= fromBalance <= totalSupply.\n                _totalSupply -= value;\n            }\n        } else {\n            unchecked {\n                // Overflow not possible: balance + value is at most totalSupply, which we know fits into a uint256.\n                _balances[to] += value;\n            }\n        }\n\n        emit Transfer(from, to, value);\n    }\n\n    /**\n     * @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0).\n     * Relies on the `_update` mechanism\n     *\n     * Emits a {Transfer} event with `from` set to the zero address.\n     *\n     * NOTE: This function is not virtual, {_update} should be overridden instead.\n     */\n    function _mint(address account, uint256 value) internal {\n        if (account == address(0)) {\n            revert ERC20InvalidReceiver(address(0));\n        }\n        _update(address(0), account, value);\n    }\n\n    /**\n     * @dev Destroys a `value` amount of tokens from `account`, lowering the total supply.\n     * Relies on the `_update` mechanism.\n     *\n     * Emits a {Transfer} event with `to` set to the zero address.\n     *\n     * NOTE: This function is not virtual, {_update} should be overridden instead\n     */\n    function _burn(address account, uint256 value) internal {\n        if (account == address(0)) {\n            revert ERC20InvalidSender(address(0));\n        }\n        _update(account, address(0), value);\n    }\n\n    /**\n     * @dev Sets `value` as the allowance of `spender` over the `owner`'s tokens.\n     *\n     * This internal function is equivalent to `approve`, and can be used to\n     * e.g. set automatic allowances for certain subsystems, etc.\n     *\n     * Emits an {Approval} event.\n     *\n     * Requirements:\n     *\n     * - `owner` cannot be the zero address.\n     * - `spender` cannot be the zero address.\n     *\n     * Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument.\n     */\n    function _approve(address owner, address spender, uint256 value) internal {\n        _approve(owner, spender, value, true);\n    }\n\n    /**\n     * @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event.\n     *\n     * By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by\n     * `_spendAllowance` during the `transferFrom` operation set the flag to false. This saves gas by not emitting any\n     * `Approval` event during `transferFrom` operations.\n     *\n     * Anyone who wishes to continue emitting `Approval` events on the`transferFrom` operation can force the flag to\n     * true using the following override:\n     *\n     * ```solidity\n     * function _approve(address owner, address spender, uint256 value, bool) internal virtual override {\n     *     super._approve(owner, spender, value, true);\n     * }\n     * ```\n     *\n     * Requirements are the same as {_approve}.\n     */\n    function _approve(address owner, address spender, uint256 value, bool emitEvent) internal virtual {\n        if (owner == address(0)) {\n            revert ERC20InvalidApprover(address(0));\n        }\n        if (spender == address(0)) {\n            revert ERC20InvalidSpender(address(0));\n        }\n        _allowances[owner][spender] = value;\n        if (emitEvent) {\n            emit Approval(owner, spender, value);\n        }\n    }\n\n    /**\n     * @dev Updates `owner`'s allowance for `spender` based on spent `value`.\n     *\n     * Does not update the allowance value in case of infinite allowance.\n     * Revert if not enough allowance is available.\n     *\n     * Does not emit an {Approval} event.\n     */\n    function _spendAllowance(address owner, address spender, uint256 value) internal virtual {\n        uint256 currentAllowance = allowance(owner, spender);\n        if (currentAllowance < type(uint256).max) {\n            if (currentAllowance < value) {\n                revert ERC20InsufficientAllowance(spender, currentAllowance, value);\n            }\n            unchecked {\n                _approve(owner, spender, currentAllowance - value, false);\n            }\n        }\n    }\n}\n"},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (token/ERC20/IERC20.sol)\n\npragma solidity >=0.4.16;\n\n/**\n * @dev Interface of the ERC-20 standard as defined in the ERC.\n */\ninterface IERC20 {\n    /**\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\n     * another (`to`).\n     *\n     * Note that `value` may be zero.\n     */\n    event Transfer(address indexed from, address indexed to, uint256 value);\n\n    /**\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\n     * a call to {approve}. `value` is the new allowance.\n     */\n    event Approval(address indexed owner, address indexed spender, uint256 value);\n\n    /**\n     * @dev Returns the value of tokens in existence.\n     */\n    function totalSupply() external view returns (uint256);\n\n    /**\n     * @dev Returns the value of tokens owned by `account`.\n     */\n    function balanceOf(address account) external view returns (uint256);\n\n    /**\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`.\n     *\n     * Returns a boolean value indicating whether the operation succeeded.\n     *\n     * Emits a {Transfer} event.\n     */\n    function transfer(address to, uint256 value) external returns (bool);\n\n    /**\n     * @dev Returns the remaining number of tokens that `spender` will be\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\n     * zero by default.\n     *\n     * This value changes when {approve} or {transferFrom} are called.\n     */\n    function allowance(address owner, address spender) external view returns (uint256);\n\n    /**\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\n     * caller's tokens.\n     *\n     * Returns a boolean value indicating whether the operation succeeded.\n     *\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\n     * that someone may use both the old and the new allowance by unfortunate\n     * transaction ordering. One possible solution to mitigate this race\n     * condition is to first reduce the spender's allowance to 0 and set the\n     * desired value afterwards:\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n     *\n     * Emits an {Approval} event.\n     */\n    function approve(address spender, uint256 value) external returns (bool);\n\n    /**\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the\n     * allowance mechanism. `value` is then deducted from the caller's\n     * allowance.\n     *\n     * Returns a boolean value indicating whether the operation succeeded.\n     *\n     * Emits a {Transfer} event.\n     */\n    function transferFrom(address from, address to, uint256 value) external returns (bool);\n}\n"},"@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/extensions/ERC20Burnable.sol)\n\npragma solidity ^0.8.20;\n\nimport {ERC20} from \"../ERC20.sol\";\nimport {Context} from \"../../../utils/Context.sol\";\n\n/**\n * @dev Extension of {ERC20} that allows token holders to destroy both their own\n * tokens and those that they have an allowance for, in a way that can be\n * recognized off-chain (via event analysis).\n */\nabstract contract ERC20Burnable is Context, ERC20 {\n    /**\n     * @dev Destroys a `value` amount of tokens from the caller.\n     *\n     * See {ERC20-_burn}.\n     */\n    function burn(uint256 value) public virtual {\n        _burn(_msgSender(), value);\n    }\n\n    /**\n     * @dev Destroys a `value` amount of tokens from `account`, deducting from\n     * the caller's allowance.\n     *\n     * See {ERC20-_burn} and {ERC20-allowance}.\n     *\n     * Requirements:\n     *\n     * - the caller must have allowance for ``accounts``'s tokens of at least\n     * `value`.\n     */\n    function burnFrom(address account, uint256 value) public virtual {\n        _spendAllowance(account, _msgSender(), value);\n        _burn(account, value);\n    }\n}\n"},"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (token/ERC20/extensions/IERC20Metadata.sol)\n\npragma solidity >=0.6.2;\n\nimport {IERC20} from \"../IERC20.sol\";\n\n/**\n * @dev Interface for the optional metadata functions from the ERC-20 standard.\n */\ninterface IERC20Metadata is IERC20 {\n    /**\n     * @dev Returns the name of the token.\n     */\n    function name() external view returns (string memory);\n\n    /**\n     * @dev Returns the symbol of the token.\n     */\n    function symbol() external view returns (string memory);\n\n    /**\n     * @dev Returns the decimals places of the token.\n     */\n    function decimals() external view returns (uint8);\n}\n"},"@openzeppelin/contracts/utils/Context.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract Context {\n    function _msgSender() internal view virtual returns (address) {\n        return msg.sender;\n    }\n\n    function _msgData() internal view virtual returns (bytes calldata) {\n        return msg.data;\n    }\n\n    function _contextSuffixLength() internal view virtual returns (uint256) {\n        return 0;\n    }\n}\n"},"@openzeppelin/contracts/utils/Pausable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.3.0) (utils/Pausable.sol)\n\npragma solidity ^0.8.20;\n\nimport {Context} from \"../utils/Context.sol\";\n\n/**\n * @dev Contract module which allows children to implement an emergency stop\n * mechanism that can be triggered by an authorized account.\n *\n * This module is used through inheritance. It will make available the\n * modifiers `whenNotPaused` and `whenPaused`, which can be applied to\n * the functions of your contract. Note that they will not be pausable by\n * simply including this module, only once the modifiers are put in place.\n */\nabstract contract Pausable is Context {\n    bool private _paused;\n\n    /**\n     * @dev Emitted when the pause is triggered by `account`.\n     */\n    event Paused(address account);\n\n    /**\n     * @dev Emitted when the pause is lifted by `account`.\n     */\n    event Unpaused(address account);\n\n    /**\n     * @dev The operation failed because the contract is paused.\n     */\n    error EnforcedPause();\n\n    /**\n     * @dev The operation failed because the contract is not paused.\n     */\n    error ExpectedPause();\n\n    /**\n     * @dev Modifier to make a function callable only when the contract is not paused.\n     *\n     * Requirements:\n     *\n     * - The contract must not be paused.\n     */\n    modifier whenNotPaused() {\n        _requireNotPaused();\n        _;\n    }\n\n    /**\n     * @dev Modifier to make a function callable only when the contract is paused.\n     *\n     * Requirements:\n     *\n     * - The contract must be paused.\n     */\n    modifier whenPaused() {\n        _requirePaused();\n        _;\n    }\n\n    /**\n     * @dev Returns true if the contract is paused, and false otherwise.\n     */\n    function paused() public view virtual returns (bool) {\n        return _paused;\n    }\n\n    /**\n     * @dev Throws if the contract is paused.\n     */\n    function _requireNotPaused() internal view virtual {\n        if (paused()) {\n            revert EnforcedPause();\n        }\n    }\n\n    /**\n     * @dev Throws if the contract is not paused.\n     */\n    function _requirePaused() internal view virtual {\n        if (!paused()) {\n            revert ExpectedPause();\n        }\n    }\n\n    /**\n     * @dev Triggers stopped state.\n     *\n     * Requirements:\n     *\n     * - The contract must not be paused.\n     */\n    function _pause() internal virtual whenNotPaused {\n        _paused = true;\n        emit Paused(_msgSender());\n    }\n\n    /**\n     * @dev Returns to normal state.\n     *\n     * Requirements:\n     *\n     * - The contract must be paused.\n     */\n    function _unpause() internal virtual whenPaused {\n        _paused = false;\n        emit Unpaused(_msgSender());\n    }\n}\n"},"@openzeppelin/contracts/utils/introspection/ERC165.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (utils/introspection/ERC165.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC165} from \"./IERC165.sol\";\n\n/**\n * @dev Implementation of the {IERC165} interface.\n *\n * Contracts that want to implement ERC-165 should inherit from this contract and override {supportsInterface} to check\n * for the additional interface id that will be supported. For example:\n *\n * ```solidity\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n *     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n * }\n * ```\n */\nabstract contract ERC165 is IERC165 {\n    /// @inheritdoc IERC165\n    function supportsInterface(bytes4 interfaceId) public view virtual returns (bool) {\n        return interfaceId == type(IERC165).interfaceId;\n    }\n}\n"},"@openzeppelin/contracts/utils/introspection/IERC165.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (utils/introspection/IERC165.sol)\n\npragma solidity >=0.4.16;\n\n/**\n * @dev Interface of the ERC-165 standard, as defined in the\n * https://eips.ethereum.org/EIPS/eip-165[ERC].\n *\n * Implementers can declare support of contract interfaces, which can then be\n * queried by others ({ERC165Checker}).\n *\n * For an implementation, see {ERC165}.\n */\ninterface IERC165 {\n    /**\n     * @dev Returns true if this contract implements the interface defined by\n     * `interfaceId`. See the corresponding\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section]\n     * to learn more about how these ids are created.\n     *\n     * This function call must use less than 30 000 gas.\n     */\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\n}\n"},"contracts/OltinTokenV3.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.24;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol\";\nimport \"@openzeppelin/contracts/access/AccessControl.sol\";\nimport \"@openzeppelin/contracts/utils/Pausable.sol\";\nimport \"./interfaces/AggregatorV3Interface.sol\";\n\n/**\n * @title OltinToken V3 (Proof-of-Reserve, non-custodial)\n * @notice Gold-backed ERC20. 1 OLTIN == 1 gram of attested gold reserve.\n *\n * @dev Redesign vs V2 — the custodial anti-patterns are REMOVED:\n *        - NO BURNER_ROLE and NO admin/arbitrary-holder burn. Burning is only\n *          via the public, allowance-gated {ERC20Burnable-burnFrom} / {burn}.\n *        - NO adminTransfer (users' balances can never be moved by an admin).\n *        - MINTER_ROLE is granted to the {Exchange} ONLY (in the deploy script),\n *          never to the deployer, so every mint passes the reserve guard.\n *\n *      Secure-Mint (Proof-of-Reserve): {mint} reads a Chainlink-compatible\n *      reserve feed and refuses to mint beyond the attested reserve, refuses a\n *      non-positive reserve, and refuses a stale (or future-dated) reading.\n *\n *      `transferFeeBps` is stored and settable but DORMANT in this release:\n *      {_update} does NOT siphon a fee. It exists for a future fee activation.\n */\ncontract OltinTokenV3 is ERC20, ERC20Burnable, AccessControl, Pausable {\n    bytes32 public constant MINTER_ROLE = keccak256(\"MINTER_ROLE\");\n    bytes32 public constant PAUSER_ROLE = keccak256(\"PAUSER_ROLE\");\n\n    /// @notice Reserve proof feed (attested grams of gold, see {reserveDecimals}).\n    AggregatorV3Interface public immutable reserveFeed;\n    /// @notice Cached decimals of {reserveFeed}, validated <= 18 at construction.\n    uint8 public immutable reserveDecimals;\n    /// @notice Cached 10**(18 - reserveDecimals), computed once at construction\n    ///         so {mint} scales the reserve without recomputing the exponent on\n    ///         every call. Behavior is identical to `10 ** (18 - reserveDecimals)`.\n    uint256 public immutable reserveScale;\n    /// @notice Max age (seconds) a reserve reading may have before it is stale.\n    uint256 public immutable maxAgeReserve;\n\n    /// @notice DORMANT in this release — stored/settable but not applied.\n    uint256 public transferFeeBps = 50;\n    /// @notice DORMANT fee sink (unused while {transferFeeBps} is dormant).\n    address public feeCollector;\n\n    event Minted(address indexed to, uint256 amount, uint256 timestamp);\n    event FeeConfigUpdated(uint256 feeBps, address collector);\n\n    /**\n     * @param _reserveFeed   Address of the reserve proof feed (an {Attestor}).\n     * @param _maxAgeReserve Max staleness (seconds) accepted for a reserve read.\n     * @param _feeCollector  Dormant fee collector (may be zero for now).\n     */\n    constructor(\n        address _reserveFeed,\n        uint256 _maxAgeReserve,\n        address _feeCollector\n    ) ERC20(\"Oltin Gold Token\", \"OLTIN\") {\n        require(_reserveFeed != address(0), \"Zero address\");\n        uint8 d = AggregatorV3Interface(_reserveFeed).decimals();\n        require(d <= 18, \"reserve decimals>18\");\n\n        reserveFeed = AggregatorV3Interface(_reserveFeed);\n        reserveDecimals = d;\n        // Precompute the 18-decimal scaling factor once (d <= 18, so no underflow).\n        reserveScale = 10 ** (18 - d);\n        maxAgeReserve = _maxAgeReserve;\n        feeCollector = _feeCollector;\n\n        // NOTE: MINTER_ROLE is intentionally NOT granted here. The deploy\n        // script grants it to the Exchange, the sole minter.\n        _grantRole(DEFAULT_ADMIN_ROLE, msg.sender);\n        _grantRole(PAUSER_ROLE, msg.sender);\n    }\n\n    /**\n     * @notice Mint `amount` OLTIN to `to`, subject to the Proof-of-Reserve guard.\n     * @dev Callable only by MINTER_ROLE (the Exchange). Reverts unless the\n     *      reserve reading is positive, fresh, and covers total supply + amount.\n     */\n    function mint(address to, uint256 amount)\n        external\n        onlyRole(MINTER_ROLE)\n        whenNotPaused\n    {\n        require(to != address(0), \"Zero address\");\n        require(amount > 0, \"Zero amount\");\n\n        (, int256 r, , uint256 upd, ) = reserveFeed.latestRoundData();\n        require(r > 0, \"reserve<=0\");\n        // `upd <= block.timestamp` is checked FIRST so a future-dated reading\n        // reverts with the named error instead of underflowing the subtraction.\n        require(\n            upd <= block.timestamp && block.timestamp - upd <= maxAgeReserve,\n            \"reserve stale\"\n        );\n        // Scale the reserve up to 18 decimals (1 OLTIN wei == 1e-18 gram) using\n        // the cached {reserveScale} instead of recomputing the exponent.\n        require(\n            totalSupply() + amount <= uint256(r) * reserveScale,\n            \"exceeds reserve\"\n        );\n\n        _mint(to, amount);\n        emit Minted(to, amount, block.timestamp);\n    }\n\n    /**\n     * @notice Update the (dormant) fee configuration.\n     * @dev No effect on transfers while the fee is dormant; kept for a future\n     *      activation and to mirror the V2 admin surface.\n     */\n    function setFeeConfig(uint256 _feeBps, address _collector)\n        external\n        onlyRole(DEFAULT_ADMIN_ROLE)\n    {\n        require(_feeBps <= 500, \"Fee max 5%\");\n        transferFeeBps = _feeBps;\n        feeCollector = _collector;\n        emit FeeConfigUpdated(_feeBps, _collector);\n    }\n\n    function pause() external onlyRole(PAUSER_ROLE) {\n        _pause();\n    }\n\n    function unpause() external onlyRole(PAUSER_ROLE) {\n        _unpause();\n    }\n\n    /**\n     * @dev Pausable transfer hook. The DORMANT `transferFeeBps` is deliberately\n     *      NOT applied here — transfers move the full amount in this release.\n     */\n    function _update(address from, address to, uint256 value)\n        internal\n        override\n        whenNotPaused\n    {\n        super._update(from, to, value);\n    }\n\n    function decimals() public pure override returns (uint8) {\n        return 18;\n    }\n}\n"},"contracts/interfaces/AggregatorV3Interface.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.24;\n\n/**\n * @title AggregatorV3Interface\n * @notice Local, minimal copy of the canonical Chainlink price-feed interface.\n * @dev We intentionally do NOT add the @chainlink npm dependency. The tuple\n *      order and types below MUST match Chainlink exactly so that swapping our\n *      {Attestor} for a native Chainlink feed on mainnet is a drop-in change\n *      for every consumer ({OltinTokenV3}, {Exchange}).\n *\n *      Chainlink `latestRoundData` returns:\n *        (uint80 roundId, int256 answer, uint256 startedAt,\n *         uint256 updatedAt, uint80 answeredInRound)\n */\ninterface AggregatorV3Interface {\n    /// @notice Number of decimals in the answer (e.g. 8 for USD-quoted feeds).\n    function decimals() external view returns (uint8);\n\n    /// @notice Data of the latest round.\n    function latestRoundData()\n        external\n        view\n        returns (\n            uint80 roundId,\n            int256 answer,\n            uint256 startedAt,\n            uint256 updatedAt,\n            uint80 answeredInRound\n        );\n}\n"}}},"contractName":"contracts/OltinTokenV3.sol:OltinTokenV3","compilerZksolcVersion":"v1.5.8","compilerSolcVersion":"zkVM-0.8.24-1.0.1","optimizationUsed":true,"optimizerMode":null,"constructorArguments":"0x0000000000000000000000009413f60295dcf7d81fcb69ee256029900b107d1b0000000000000000000000000000000000000000000000000000000000000e10000000000000000000000000a3aa356e40c202abd1d5fd9dfbe63430a846069f","isSystem":false,"forceEvmla":false},"artifacts":{"bytecode":[0,17,0,0,0,0,0,2,0,0,0,96,3,16,2,112,0,0,2,102,3,48,1,151,0,0,0,1,0,32,1,144,0,0,0,40,0,0,193,61,0,0,0,128,2,0,0,57,0,0,0,64,0,32,4,63,0,0,0,4,0,48,0,140,0,0,0,80,0,0,65,61,0,0,0,0,2,1,4,59,0,0,0,224,2,32,2,112,0,0,2,125,0,32,0,156,0,0,0,82,0,0,161,61,0,0,2,126,0,32,0,156,0,0,0,99,0,0,33,61,0,0,2,138,0,32,0,156,0,0,0,133,0,0,33,61,0,0,2,144,0,32,0,156,0,0,1,9,0,0,33,61,0,0,2,147,0,32,0,156,0,0,1,143,0,0,97,61,0,0,2,148,0,32,0,156,0,0,0,80,0,0,193,61,0,0,0,0,1,0,4,22,0,0,0,0,0,1,0,75,0,0,0,80,0,0,193,61,0,0,0,0,1,0,4,18,0,15,0,0,0,1,0,29,0,14,0,32,0,0,0,61,0,0,128,5,1,0,0,57,0,0,0,68,3,0,0,57,0,0,0,0,4,0,4,21,0,0,0,15,4,64,0,138,0,0,0,5,4,64,2,16,0,0,2,172,2,0,0,65,9,148,9,108,0,0,4,15,0,0,0,255,1,16,1,143,0,0,0,128,0,16,4,63,0,0,2,170,1,0,0,65,0,0,9,149,0,1,4,46,0,0,1,0,4,0,0,57,0,0,0,64,0,64,4,63,0,0,0,0,2,0,4,22,0,0,0,0,0,2,0,75,0,0,0,80,0,0,193,61,0,0,0,31,2,48,0,57,0,0,2,103,2,32,1,151,0,0,1,0,2,32,0,57,0,0,0,64,0,32,4,63,0,0,0,31,5,48,1,143,0,0,2,104,6,48,1,152,0,0,1,0,2,96,0,57,0,0,0,58,0,0,97,61,0,0,0,0,7,1,3,79,0,0,0,0,120,7,4,60,0,0,0,0,4,132,4,54,0,0,0,0,0,36,0,75,0,0,0,54,0,0,193,61,0,0,0,0,0,5,0,75,0,0,0,71,0,0,97,61,0,0,0,0,1,97,3,79,0,0,0,3,4,80,2,16,0,0,0,0,5,2,4,51,0,0,0,0,5,69,1,207,0,0,0,0,5,69,2,47,0,0,0,0,1,1,4,59,0,0,1,0,4,64,0,137,0,0,0,0,1,65,2,47,0,0,0,0,1,65,1,207,0,0,0,0,1,81,1,159,0,0,0,0,0,18,4,53,0,0,0,96,0,48,0,140,0,0,0,80,0,0,65,61,0,0,1,0,6,0,4,61,0,0,2,105,0,96,0,156,0,0,0,80,0,0,33,61,0,0,1,64,1,0,4,61,0,9,0,0,0,1,0,29,0,0,2,105,0,16,0,156,0,0,0,214,0,0,161,61,0,0,0,0,1,0,0,25,0,0,9,150,0,1,4,48,0,0,2,149,0,32,0,156,0,0,0,120,0,0,161,61,0,0,2,150,0,32,0,156,0,0,0,197,0,0,33,61,0,0,2,156,0,32,0,156,0,0,1,35,0,0,33,61,0,0,2,159,0,32,0,156,0,0,1,198,0,0,97,61,0,0,2,160,0,32,0,156,0,0,0,80,0,0,193,61,0,0,0,0,1,0,4,22,0,0,0,0,0,1,0,75,0,0,0,80,0,0,193,61,0,0,0,18,1,0,0,57,0,0,0,128,0,16,4,63,0,0,2,170,1,0,0,65,0,0,9,149,0,1,4,46,0,0,2,127,0,32,0,156,0,0,0,164,0,0,33,61,0,0,2,133,0,32,0,156,0,0,1,69,0,0,33,61,0,0,2,136,0,32,0,156,0,0,2,5,0,0,97,61,0,0,2,137,0,32,0,156,0,0,0,80,0,0,193,61,0,0,0,68,0,48,0,140,0,0,0,80,0,0,65,61,0,0,0,0,2,0,4,22,0,0,0,0,0,2,0,75,0,0,0,80,0,0,193,61,0,0,0,4,2,16,3,112,0,0,0,0,2,2,4,59,0,0,2,105,0,32,0,156,0,0,0,80,0,0,33,61,0,0,0,36,1,16,3,112,0,0,0,0,3,1,4,59,0,0,0,0,1,0,4,17,0,0,2,211,0,0,1,61,0,0,2,161,0,32,0,156,0,0,0,242,0,0,161,61,0,0,2,162,0,32,0,156,0,0,1,84,0,0,33,61,0,0,2,165,0,32,0,156,0,0,2,11,0,0,97,61,0,0,2,166,0,32,0,156,0,0,0,80,0,0,193,61,0,0,0,0,1,0,4,22,0,0,0,0,0,1,0,75,0,0,0,80,0,0,193,61,0,0,0,2,1,0,0,57,0,0,3,14,0,0,1,61,0,0,2,139,0,32,0,156,0,0,1,103,0,0,33,61,0,0,2,142,0,32,0,156,0,0,2,25,0,0,97,61,0,0,2,143,0,32,0,156,0,0,0,80,0,0,193,61,0,0,0,68,0,48,0,140,0,0,0,80,0,0,65,61,0,0,0,0,2,0,4,22,0,0,0,0,0,2,0,75,0,0,0,80,0,0,193,61,0,0,0,36,2,16,3,112,0,0,0,0,2,2,4,59,0,9,0,0,0,2,0,29,0,0,2,105,0,32,0,156,0,0,0,80,0,0,33,61,0,0,0,4,1,16,3,112,0,0,0,0,1,1,4,59,0,0,0,0,0,16,4,63,0,0,0,5,1,0,0,57,0,0,0,32,0,16,4,63,0,0,0,64,2,0,0,57,0,0,0,0,1,0,0,25,9,148,9,87,0,0,4,15,0,0,0,9,2,0,0,41,0,0,0,0,0,32,4,63,0,0,0,32,0,16,4,63,0,0,0,0,1,0,0,25,0,0,0,64,2,0,0,57,9,148,9,87,0,0,4,15,0,0,3,22,0,0,1,61,0,0,2,128,0,32,0,156,0,0,1,123,0,0,33,61,0,0,2,131,0,32,0,156,0,0,2,49,0,0,97,61,0,0,2,132,0,32,0,156,0,0,0,80,0,0,193,61,0,0,0,68,0,48,0,140,0,0,0,80,0,0,65,61,0,0,0,0,2,0,4,22,0,0,0,0,0,2,0,75,0,0,0,80,0,0,193,61,0,0,0,36,2,16,3,112,0,0,0,0,2,2,4,59,0,9,0,0,0,2,0,29,0,0,2,105,0,32,0,156,0,0,0,80,0,0,33,61,0,0,0,4,1,16,3,112,0,0,0,0,1,1,4,59,0,8,0,0,0,1,0,29,0,0,0,0,0,16,4,63,0,0,0,5,1,0,0,57,0,0,0,32,0,16,4,63,0,0,0,64,2,0,0,57,0,0,0,0,1,0,0,25,9,148,9,87,0,0,4,15,0,0,0,1,1,16,0,57,0,0,0,0,1,1,4,26,9,148,8,110,0,0,4,15,0,0,0,8,1,0,0,41,0,0,0,9,2,0,0,41,9,148,8,158,0,0,4,15,0,0,0,0,1,0,0,25,0,0,9,149,0,1,4,46,0,0,2,151,0,32,0,156,0,0,1,134,0,0,33,61,0,0,2,154,0,32,0,156,0,0,2,56,0,0,97,61,0,0,2,155,0,32,0,156,0,0,0,80,0,0,193,61,0,0,0,36,0,48,0,140,0,0,0,80,0,0,65,61,0,0,0,0,2,0,4,22,0,0,0,0,0,2,0,75,0,0,0,80,0,0,193,61,0,0,0,4,1,16,3,112,0,0,0,0,2,1,4,59,0,0,0,0,1,0,4,17,9,148,8,239,0,0,4,15,0,0,0,0,1,0,0,25,0,0,9,149,0,1,4,46,0,0,0,64,8,0,4,61,0,0,2,106,0,128,0,156,0,0,0,236,0,0,33,61,0,0,1,32,3,0,4,61,0,0,0,64,1,128,0,57,0,0,0,64,0,16,4,63,0,0,0,16,1,0,0,57,0,0,0,0,10,24,4,54,0,0,2,107,1,0,0,65,0,0,0,0,0,26,4,53,0,0,0,64,7,0,4,61,0,0,2,106,0,112,0,156,0,0,0,236,0,0,33,61,0,0,0,64,1,112,0,57,0,0,0,64,0,16,4,63,0,0,0,5,1,0,0,57,0,0,0,0,5,23,4,54,0,0,2,108,1,0,0,65,0,0,0,0,0,21,4,53,0,0,0,0,9,8,4,51,0,0,2,109,0,144,0,156,0,0,3,46,0,0,161,61,0,0,2,191,1,0,0,65,0,0,0,0,0,16,4,63,0,0,0,65,1,0,0,57,0,0,0,4,0,16,4,63,0,0,2,192,1,0,0,65,0,0,9,150,0,1,4,48,0,0,2,167,0,32,0,156,0,0,3,29,0,0,97,61,0,0,2,168,0,32,0,156,0,0,2,113,0,0,97,61,0,0,2,169,0,32,0,156,0,0,0,80,0,0,193,61,0,0,0,68,0,48,0,140,0,0,0,80,0,0,65,61,0,0,0,0,2,0,4,22,0,0,0,0,0,2,0,75,0,0,0,80,0,0,193,61,0,0,0,4,2,16,3,112,0,0,0,0,2,2,4,59,0,9,0,0,0,2,0,29,0,0,2,105,0,32,0,156,0,0,0,80,0,0,33,61,0,0,0,36,1,16,3,112,0,0,0,0,3,1,4,59,0,0,0,0,2,0,4,17,0,0,0,0,0,2,0,75,0,0,3,126,0,0,193,61,0,0,2,202,1,0,0,65,0,0,3,129,0,0,1,61,0,0,2,145,0,32,0,156,0,0,2,145,0,0,97,61,0,0,2,146,0,32,0,156,0,0,0,80,0,0,193,61,0,0,0,68,0,48,0,140,0,0,0,80,0,0,65,61,0,0,0,0,2,0,4,22,0,0,0,0,0,2,0,75,0,0,0,80,0,0,193,61,0,0,0,4,2,16,3,112,0,0,0,0,2,2,4,59,0,0,2,105,0,32,0,156,0,0,0,80,0,0,33,61,0,0,0,0,4,2,0,25,0,0,0,36,1,16,3,112,0,0,0,0,3,1,4,59,0,8,0,0,0,3,0,29,0,0,0,0,2,0,4,17,0,0,0,0,1,4,0,25,0,9,0,0,0,4,0,29,9,148,7,140,0,0,4,15,0,0,0,9,1,0,0,41,0,0,0,8,2,0,0,41,9,148,8,239,0,0,4,15,0,0,0,0,1,0,0,25,0,0,9,149,0,1,4,46,0,0,2,157,0,32,0,156,0,0,2,159,0,0,97,61,0,0,2,158,0,32,0,156,0,0,0,80,0,0,193,61,0,0,0,0,1,0,4,22,0,0,0,0,0,1,0,75,0,0,0,80,0,0,193,61,0,0,0,0,1,0,4,17,0,0,0,0,0,16,4,63,0,0,2,118,1,0,0,65,0,0,0,32,0,16,4,63,0,0,0,0,1,0,4,20,0,0,2,102,0,16,0,156,0,0,2,102,1,0,128,65,0,0,0,192,1,16,2,16,0,0,2,115,1,16,1,199,0,0,128,16,2,0,0,57,9,148,9,143,0,0,4,15,0,0,0,1,0,32,1,144,0,0,0,80,0,0,97,61,0,0,0,64,2,0,4,61,0,0,0,0,1,1,4,59,0,0,0,0,1,1,4,26,0,0,0,255,0,16,1,144,0,0,3,133,0,0,193,61,0,0,0,36,1,32,0,57,0,0,2,119,3,0,0,65,0,0,0,0,0,49,4,53,0,0,2,176,1,0,0,65,0,0,0,0,0,18,4,53,0,0,0,4,1,32,0,57,0,0,0,0,3,0,4,17,0,0,0,0,0,49,4,53,0,0,1,193,0,0,1,61,0,0,2,134,0,32,0,156,0,0,2,176,0,0,97,61,0,0,2,135,0,32,0,156,0,0,0,80,0,0,193,61,0,0,0,0,1,0,4,22,0,0,0,0,0,1,0,75,0,0,0,80,0,0,193,61,0,0,0,0,1,0,4,18,0,11,0,0,0,1,0,29,0,10,0,64,0,0,0,61,0,0,128,5,1,0,0,57,0,0,0,68,3,0,0,57,0,0,0,0,4,0,4,21,0,0,0,11,4,64,0,138,0,0,1,117,0,0,1,61,0,0,2,163,0,32,0,156,0,0,2,185,0,0,97,61,0,0,2,164,0,32,0,156,0,0,0,80,0,0,193,61,0,0,0,36,0,48,0,140,0,0,0,80,0,0,65,61,0,0,0,0,2,0,4,22,0,0,0,0,0,2,0,75,0,0,0,80,0,0,193,61,0,0,0,4,1,16,3,112,0,0,0,0,1,1,4,59,0,0,0,0,0,16,4,63,0,0,0,5,1,0,0,57,0,0,0,32,0,16,4,63,0,0,0,64,2,0,0,57,0,0,0,0,1,0,0,25,9,148,9,87,0,0,4,15,0,0,0,1,1,16,0,57,0,0,3,14,0,0,1,61,0,0,2,140,0,32,0,156,0,0,2,220,0,0,97,61,0,0,2,141,0,32,0,156,0,0,0,80,0,0,193,61,0,0,0,0,1,0,4,22,0,0,0,0,0,1,0,75,0,0,0,80,0,0,193,61,0,0,0,0,1,0,4,18,0,13,0,0,0,1,0,29,0,12,0,96,0,0,0,61,0,0,128,5,1,0,0,57,0,0,0,68,3,0,0,57,0,0,0,0,4,0,4,21,0,0,0,13,4,64,0,138,0,0,0,5,4,64,2,16,0,0,2,172,2,0,0,65,9,148,9,108,0,0,4,15,0,0,0,128,0,16,4,63,0,0,2,170,1,0,0,65,0,0,9,149,0,1,4,46,0,0,2,129,0,32,0,156,0,0,2,244,0,0,97,61,0,0,2,130,0,32,0,156,0,0,0,80,0,0,193,61,0,0,0,0,1,0,4,22,0,0,0,0,0,1,0,75,0,0,0,80,0,0,193,61,0,0,2,119,1,0,0,65,0,0,0,128,0,16,4,63,0,0,2,170,1,0,0,65,0,0,9,149,0,1,4,46,0,0,2,152,0,32,0,156,0,0,3,18,0,0,97,61,0,0,2,153,0,32,0,156,0,0,0,80,0,0,193,61,0,0,0,0,1,0,4,22,0,0,0,0,0,1,0,75,0,0,0,80,0,0,193,61,0,0,0,7,1,0,0,57,0,0,3,14,0,0,1,61,0,0,0,68,0,48,0,140,0,0,0,80,0,0,65,61,0,0,0,0,2,0,4,22,0,0,0,0,0,2,0,75,0,0,0,80,0,0,193,61,0,0,0,4,2,16,3,112,0,0,0,0,2,2,4,59,0,9,0,0,0,2,0,29,0,0,0,36,1,16,3,112,0,0,0,0,1,1,4,59,0,8,0,0,0,1,0,29,0,0,2,105,0,16,0,156,0,0,0,80,0,0,33,61,0,0,0,0,0,0,4,63,0,0,0,5,1,0,0,57,0,0,0,32,0,16,4,63,0,0,0,0,1,0,4,20,0,0,2,102,0,16,0,156,0,0,2,102,1,0,128,65,0,0,0,192,1,16,2,16,0,0,2,115,1,16,1,199,0,0,128,16,2,0,0,57,9,148,9,143,0,0,4,15,0,0,0,1,0,32,1,144,0,0,0,80,0,0,97,61,0,0,0,0,1,1,4,59,0,0,0,0,2,0,4,17,0,0,0,0,0,32,4,63,0,0,0,32,0,16,4,63,0,0,0,0,1,0,4,20,0,0,2,102,0,16,0,156,0,0,2,102,1,0,128,65,0,0,0,192,1,16,2,16,0,0,2,115,1,16,1,199,0,0,128,16,2,0,0,57,9,148,9,143,0,0,4,15,0,0,0,1,0,32,1,144,0,0,0,80,0,0,97,61,0,0,0,64,2,0,4,61,0,0,0,0,1,1,4,59,0,0,0,0,1,1,4,26,0,0,0,255,0,16,1,144,0,0,4,32,0,0,193,61,0,0,2,176,1,0,0,65,0,0,0,0,0,18,4,53,0,0,0,4,1,32,0,57,0,0,0,0,3,0,4,17,0,0,0,0,0,49,4,53,0,0,0,36,1,32,0,57,0,0,0,0,0,1,4,53,0,0,2,102,0,32,0,156,0,0,2,102,2,0,128,65,0,0,0,64,1,32,2,16,0,0,2,177,1,16,1,199,0,0,9,150,0,1,4,48,0,0,0,68,0,48,0,140,0,0,0,80,0,0,65,61,0,0,0,0,2,0,4,22,0,0,0,0,0,2,0,75,0,0,0,80,0,0,193,61,0,0,0,4,2,16,3,112,0,0,0,0,2,2,4,59,0,9,0,0,0,2,0,29,0,0,0,36,1,16,3,112,0,0,0,0,1,1,4,59,0,8,0,0,0,1,0,29,0,0,2,105,0,16,0,156,0,0,0,80,0,0,33,61,0,0,0,9,1,0,0,41,0,0,0,0,0,16,4,63,0,0,0,5,1,0,0,57,0,0,0,32,0,16,4,63,0,0,0,0,1,0,4,20,0,0,2,102,0,16,0,156,0,0,2,102,1,0,128,65,0,0,0,192,1,16,2,16,0,0,2,115,1,16,1,199,0,0,128,16,2,0,0,57,9,148,9,143,0,0,4,15,0,0,0,1,0,32,1,144,0,0,0,80,0,0,97,61,0,0,0,0,1,1,4,59,0,0,0,1,1,16,0,57,0,0,0,0,1,1,4,26,0,7,0,0,0,1,0,29,0,0,0,0,0,16,4,63,0,0,0,5,1,0,0,57,0,0,0,32,0,16,4,63,0,0,0,0,1,0,4,20,0,0,2,102,0,16,0,156,0,0,2,102,1,0,128,65,0,0,0,192,1,16,2,16,0,0,2,115,1,16,1,199,0,0,128,16,2,0,0,57,9,148,9,143,0,0,4,15,0,0,0,1,0,32,1,144,0,0,0,80,0,0,97,61,0,0,0,0,1,1,4,59,0,0,0,0,2,0,4,17,0,0,0,0,0,32,4,63,0,0,0,32,0,16,4,63,0,0,0,0,1,0,4,20,0,0,2,102,0,16,0,156,0,0,2,102,1,0,128,65,0,0,0,192,1,16,2,16,0,0,2,115,1,16,1,199,0,0,128,16,2,0,0,57,9,148,9,143,0,0,4,15,0,0,0,1,0,32,1,144,0,0,0,80,0,0,97,61,0,0,0,0,1,1,4,59,0,0,0,0,1,1,4,26,0,0,0,255,0,16,1,144,0,0,4,158,0,0,193,61,0,0,0,64,1,0,4,61,0,0,0,36,2,16,0,57,0,0,0,7,3,0,0,41,0,0,2,102,0,0,1,61,0,0,0,0,1,0,4,22,0,0,0,0,0,1,0,75,0,0,0,80,0,0,193,61,0,0,0,128,0,0,4,63,0,0,2,170,1,0,0,65,0,0,9,149,0,1,4,46,0,0,0,0,1,0,4,22,0,0,0,0,0,1,0,75,0,0,0,80,0,0,193,61,0,0,0,0,1,0,4,18,0,17,0,0,0,1,0,29,0,16,0,0,0,0,0,61,0,0,128,5,1,0,0,57,0,0,0,68,3,0,0,57,0,0,0,0,4,0,4,21,0,0,0,17,4,64,0,138,0,0,0,5,4,64,2,16,0,0,2,172,2,0,0,65,9,148,9,108,0,0,4,15,0,0,2,181,0,0,1,61,0,0,0,0,1,0,4,22,0,0,0,0,0,1,0,75,0,0,0,80,0,0,193,61,0,0,0,0,1,0,4,17,0,0,0,0,0,16,4,63,0,0,2,118,1,0,0,65,0,0,0,32,0,16,4,63,0,0,0,0,1,0,4,20,0,0,2,102,0,16,0,156,0,0,2,102,1,0,128,65,0,0,0,192,1,16,2,16,0,0,2,115,1,16,1,199,0,0,128,16,2,0,0,57,9,148,9,143,0,0,4,15,0,0,0,1,0,32,1,144,0,0,0,80,0,0,97,61,0,0,0,0,1,1,4,59,0,0,0,0,1,1,4,26,0,0,0,255,0,16,1,144,0,0,3,144,0,0,193,61,0,0,0,64,1,0,4,61,0,0,0,36,2,16,0,57,0,0,2,119,3,0,0,65,0,0,2,102,0,0,1,61,0,0,0,0,1,0,4,22,0,0,0,0,0,1,0,75,0,0,0,80,0,0,193,61,0,0,2,171,1,0,0,65,0,0,0,128,0,16,4,63,0,0,2,170,1,0,0,65,0,0,9,149,0,1,4,46,0,0,0,68,0,48,0,140,0,0,0,80,0,0,65,61,0,0,0,0,2,0,4,22,0,0,0,0,0,2,0,75,0,0,0,80,0,0,193,61,0,0,0,4,2,16,3,112,0,0,0,0,2,2,4,59,0,9,0,0,0,2,0,29,0,0,2,105,0,32,0,156,0,0,0,80,0,0,33,61,0,0,0,36,1,16,3,112,0,0,0,0,1,1,4,59,0,8,0,0,0,1,0,29,0,0,2,171,1,0,0,65,0,0,0,0,0,16,4,63,0,0,0,5,1,0,0,57,0,0,0,32,0,16,4,63,0,0,0,0,1,0,4,20,0,0,2,102,0,16,0,156,0,0,2,102,1,0,128,65,0,0,0,192,1,16,2,16,0,0,2,115,1,16,1,199,0,0,128,16,2,0,0,57,9,148,9,143,0,0,4,15,0,0,0,1,0,32,1,144,0,0,0,80,0,0,97,61,0,0,0,0,1,1,4,59,0,0,0,0,2,0,4,17,0,0,0,0,0,32,4,63,0,0,0,32,0,16,4,63,0,0,0,0,1,0,4,20,0,0,2,102,0,16,0,156,0,0,2,102,1,0,128,65,0,0,0,192,1,16,2,16,0,0,2,115,1,16,1,199,0,0,128,16,2,0,0,57,9,148,9,143,0,0,4,15,0,0,0,1,0,32,1,144,0,0,0,80,0,0,97,61,0,0,0,0,1,1,4,59,0,0,0,0,1,1,4,26,0,0,0,255,0,16,1,144,0,0,4,51,0,0,193,61,0,0,0,64,1,0,4,61,0,0,0,36,2,16,0,57,0,0,2,171,3,0,0,65,0,0,0,0,0,50,4,53,0,0,2,176,2,0,0,65,0,0,0,0,0,33,4,53,0,0,0,4,2,16,0,57,0,0,0,0,3,0,4,17,0,0,0,0,0,50,4,53,0,0,2,102,0,16,0,156,0,0,2,102,1,0,128,65,0,0,0,64,1,16,2,16,0,0,2,177,1,16,1,199,0,0,9,150,0,1,4,48,0,0,0,0,1,0,4,22,0,0,0,0,0,1,0,75,0,0,0,80,0,0,193,61,0,0,0,3,3,0,0,57,0,0,0,0,2,3,4,26,0,0,0,1,5,32,1,144,0,0,0,1,1,32,2,112,0,0,0,127,4,16,1,143,0,0,0,0,1,4,96,25,0,0,0,31,0,16,0,140,0,0,0,0,6,0,0,57,0,0,0,1,6,0,32,57,0,0,0,0,6,98,1,63,0,0,0,1,0,96,1,144,0,0,3,56,0,0,193,61,0,0,0,128,0,16,4,63,0,0,0,0,0,5,0,75,0,0,2,238,0,0,97,61,0,0,0,0,0,48,4,63,0,0,0,2,0,32,0,140,0,0,3,174,0,0,65,61,0,0,2,203,2,0,0,65,0,0,0,0,4,0,0,25,0,0,0,0,3,4,0,25,0,0,0,0,4,2,4,26,0,0,0,160,5,48,0,57,0,0,0,0,0,69,4,53,0,0,0,1,2,32,0,57,0,0,0,32,4,48,0,57,0,0,0,0,0,20,0,75,0,0,2,136,0,0,65,61,0,0,4,14,0,0,1,61,0,0,0,36,0,48,0,140,0,0,0,80,0,0,65,61,0,0,0,0,2,0,4,22,0,0,0,0,0,2,0,75,0,0,0,80,0,0,193,61,0,0,0,4,1,16,3,112,0,0,0,0,1,1,4,59,0,0,2,105,0,16,0,156,0,0,0,80,0,0,33,61,0,0,0,0,0,16,4,63,0,0,0,32,0,0,4,63,0,0,0,64,2,0,0,57,0,0,0,0,1,0,0,25,0,0,3,13,0,0,1,61,0,0,0,68,0,48,0,140,0,0,0,80,0,0,65,61,0,0,0,0,2,0,4,22,0,0,0,0,0,2,0,75,0,0,0,80,0,0,193,61,0,0,0,36,2,16,3,112,0,0,0,0,3,2,4,59,0,0,2,105,0,48,0,156,0,0,0,80,0,0,33,61,0,0,0,0,2,0,4,17,0,0,0,0,0,35,0,75,0,0,3,167,0,0,193,61,0,0,0,4,1,16,3,112,0,0,0,0,1,1,4,59,9,148,8,158,0,0,4,15,0,0,0,0,1,0,0,25,0,0,9,149,0,1,4,46,0,0,0,0,1,0,4,22,0,0,0,0,0,1,0,75,0,0,0,80,0,0,193,61,0,0,0,8,1,0,0,57,0,0,0,0,1,1,4,26,0,0,2,105,1,16,1,151,0,0,0,128,0,16,4,63,0,0,2,170,1,0,0,65,0,0,9,149,0,1,4,46,0,0,0,100,0,48,0,140,0,0,0,80,0,0,65,61,0,0,0,0,2,0,4,22,0,0,0,0,0,2,0,75,0,0,0,80,0,0,193,61,0,0,0,4,2,16,3,112,0,0,0,0,2,2,4,59,0,0,2,105,0,32,0,156,0,0,0,80,0,0,33,61,0,0,0,0,3,2,0,25,0,0,0,36,2,16,3,112,0,0,0,0,2,2,4,59,0,9,0,0,0,2,0,29,0,0,2,105,0,32,0,156,0,0,0,80,0,0,33,61,0,0,0,68,1,16,3,112,0,0,0,0,4,1,4,59,0,8,0,0,0,4,0,29,0,0,0,0,2,0,4,17,0,0,0,0,1,3,0,25,0,7,0,0,0,3,0,29,0,0,0,0,3,4,0,25,9,148,7,140,0,0,4,15,0,0,0,7,1,0,0,41,0,0,0,9,2,0,0,41,0,0,0,8,3,0,0,41,9,148,7,246,0,0,4,15,0,0,0,1,1,0,0,57,0,0,0,64,2,0,4,61,0,0,0,0,0,18,4,53,0,0,2,102,0,32,0,156,0,0,2,102,2,0,128,65,0,0,0,64,1,32,2,16,0,0,2,173,1,16,1,199,0,0,9,149,0,1,4,46,0,0,0,0,1,0,4,22,0,0,0,0,0,1,0,75,0,0,0,80,0,0,193,61,0,0,0,4,3,0,0,57,0,0,0,0,2,3,4,26,0,0,0,1,5,32,1,144,0,0,0,1,1,32,2,112,0,0,0,127,4,16,1,143,0,0,0,0,1,4,96,25,0,0,0,31,0,16,0,140,0,0,0,0,6,0,0,57,0,0,0,1,6,0,32,57,0,0,0,0,6,98,1,63,0,0,0,1,0,96,1,144,0,0,3,56,0,0,193,61,0,0,0,128,0,16,4,63,0,0,0,0,0,5,0,75,0,0,3,171,0,0,193,61,0,0,2,207,1,32,1,151,0,0,0,160,0,16,4,63,0,0,0,0,0,4,0,75,0,0,0,192,1,0,0,57,0,0,0,160,1,0,96,57,0,0,4,15,0,0,1,61,0,0,0,68,0,48,0,140,0,0,0,80,0,0,65,61,0,0,0,0,2,0,4,22,0,0,0,0,0,2,0,75,0,0,0,80,0,0,193,61,0,0,0,4,2,16,3,112,0,0,0,0,2,2,4,59,0,0,2,105,0,32,0,156,0,0,0,80,0,0,33,61,0,0,0,36,1,16,3,112,0,0,0,0,1,1,4,59,0,9,0,0,0,1,0,29,0,0,2,105,0,16,0,156,0,0,0,80,0,0,33,61,0,0,0,0,0,32,4,63,0,0,0,1,1,0,0,57,0,0,0,32,0,16,4,63,0,0,0,64,2,0,0,57,0,0,0,0,1,0,0,25,9,148,9,87,0,0,4,15,0,0,0,9,2,0,0,41,0,0,0,0,0,32,4,63,0,0,0,32,0,16,4,63,0,0,0,0,1,0,0,25,0,0,0,64,2,0,0,57,9,148,9,87,0,0,4,15,0,0,0,0,1,1,4,26,0,0,0,128,0,16,4,63,0,0,2,170,1,0,0,65,0,0,9,149,0,1,4,46,0,0,0,0,1,0,4,22,0,0,0,0,0,1,0,75,0,0,0,80,0,0,193,61,0,0,0,6,1,0,0,57,0,0,0,0,1,1,4,26,0,0,0,255,0,16,1,144,0,0,0,0,1,0,0,57,0,0,0,1,1,0,192,57,0,0,0,128,0,16,4,63,0,0,2,170,1,0,0,65,0,0,9,149,0,1,4,46,0,0,0,36,0,48,0,140,0,0,0,80,0,0,65,61,0,0,0,0,2,0,4,22,0,0,0,0,0,2,0,75,0,0,0,80,0,0,193,61,0,0,0,4,1,16,3,112,0,0,0,0,1,1,4,59,0,0,2,204,0,16,1,152,0,0,0,80,0,0,193,61,0,0,2,205,0,16,0,156,0,0,0,0,2,0,0,57,0,0,0,1,2,0,96,57,0,0,2,206,0,16,0,156,0,0,0,1,2,32,97,191,0,0,0,128,0,32,4,63,0,0,2,170,1,0,0,65,0,0,9,149,0,1,4,46,0,0,0,3,4,0,0,57,0,0,0,0,1,4,4,26,0,0,0,1,2,16,1,144,0,0,0,1,11,16,2,112,0,0,0,127,11,176,97,143,0,0,0,31,0,176,0,140,0,0,0,0,1,0,0,57,0,0,0,1,1,0,32,57,0,0,0,0,0,18,0,75,0,0,3,62,0,0,97,61,0,0,2,191,1,0,0,65,0,0,0,0,0,16,4,63,0,0,0,34,1,0,0,57,0,0,0,4,0,16,4,63,0,0,2,192,1,0,0,65,0,0,9,150,0,1,4,48,0,0,0,32,0,176,0,140,0,3,0,0,0,3,0,29,0,7,0,0,0,7,0,29,0,4,0,0,0,6,0,29,0,8,0,0,0,5,0,29,0,0,3,104,0,0,65,61,0,1,0,0,0,11,0,29,0,2,0,0,0,10,0,29,0,5,0,0,0,9,0,29,0,6,0,0,0,8,0,29,0,0,0,0,0,64,4,63,0,0,0,0,1,0,4,20,0,0,2,102,0,16,0,156,0,0,2,102,1,0,128,65,0,0,0,192,1,16,2,16,0,0,2,110,1,16,1,199,0,0,128,16,2,0,0,57,9,148,9,143,0,0,4,15,0,0,0,1,0,32,1,144,0,0,0,80,0,0,97,61,0,0,0,5,9,0,0,41,0,0,0,31,2,144,0,57,0,0,0,5,2,32,2,112,0,0,0,32,0,144,0,140,0,0,0,0,2,0,64,25,0,0,0,0,3,1,4,59,0,0,0,1,1,0,0,41,0,0,0,31,1,16,0,57,0,0,0,5,1,16,2,112,0,0,0,0,1,19,0,25,0,0,0,0,2,35,0,25,0,0,0,0,0,18,0,75,0,0,0,7,7,0,0,41,0,0,0,8,5,0,0,41,0,0,0,3,4,0,0,57,0,0,0,6,8,0,0,41,0,0,0,2,10,0,0,41,0,0,3,104,0,0,129,61,0,0,0,0,0,2,4,27,0,0,0,1,2,32,0,57,0,0,0,0,0,18,0,75,0,0,3,100,0,0,65,61,0,0,0,31,0,144,0,140,0,0,3,176,0,0,161,61,0,5,0,0,0,9,0,29,0,6,0,0,0,8,0,29,0,0,0,0,0,64,4,63,0,0,0,0,1,0,4,20,0,0,2,102,0,16,0,156,0,0,2,102,1,0,128,65,0,0,0,192,1,16,2,16,0,0,2,110,1,16,1,199,0,0,128,16,2,0,0,57,9,148,9,143,0,0,4,15,0,0,0,1,0,32,1,144,0,0,0,80,0,0,97,61,0,0,0,5,9,0,0,41,0,0,2,208,2,144,1,152,0,0,0,0,1,1,4,59,0,0,0,6,8,0,0,41,0,0,4,64,0,0,193,61,0,0,0,32,3,0,0,57,0,0,0,7,7,0,0,41,0,0,4,77,0,0,1,61,0,0,0,9,0,0,0,107,0,0,3,187,0,0,193,61,0,0,2,200,1,0,0,65,0,0,0,128,0,16,4,63,0,0,0,132,0,0,4,63,0,0,2,201,1,0,0,65,0,0,9,150,0,1,4,48,0,0,0,6,1,0,0,57,0,0,0,0,3,1,4,26,0,0,0,255,0,48,1,144,0,0,3,243,0,0,193,61,0,0,2,196,1,0,0,65,0,0,0,0,0,18,4,53,0,0,2,102,0,32,0,156,0,0,2,102,2,0,128,65,0,0,0,64,1,32,2,16,0,0,2,112,1,16,1,199,0,0,9,150,0,1,4,48,0,0,0,6,1,0,0,57,0,0,0,0,2,1,4,26,0,0,0,255,0,32,1,144,0,0,7,85,0,0,193,61,0,0,2,207,2,32,1,151,0,0,0,1,2,32,1,191,0,0,0,0,0,33,4,27,0,0,0,64,1,0,4,61,0,0,0,0,2,0,4,17,0,0,0,0,0,33,4,53,0,0,2,102,0,16,0,156,0,0,2,102,1,0,128,65,0,0,0,64,1,16,2,16,0,0,0,0,2,0,4,20,0,0,2,102,0,32,0,156,0,0,2,102,2,0,128,65,0,0,0,192,2,32,2,16,0,0,0,0,1,18,1,159,0,0,2,110,1,16,1,199,0,0,128,13,2,0,0,57,0,0,0,1,3,0,0,57,0,0,2,175,4,0,0,65,0,0,4,254,0,0,1,61,0,0,2,197,1,0,0,65,0,0,0,128,0,16,4,63,0,0,2,198,1,0,0,65,0,0,9,150,0,1,4,48,0,0,0,0,0,48,4,63,0,0,0,2,0,32,0,140,0,0,4,4,0,0,129,61,0,0,0,160,1,0,0,57,0,0,4,15,0,0,1,61,0,0,0,0,0,9,0,75,0,0,0,0,1,0,0,25,0,0,3,180,0,0,97,61,0,0,0,0,1,10,4,51,0,0,0,3,2,144,2,16,0,0,2,209,2,32,2,127,0,0,2,209,2,32,1,103,0,0,0,0,1,33,1,111,0,0,0,1,2,144,2,16,0,0,0,0,1,33,1,159,0,0,4,91,0,0,1,61,0,8,0,0,0,3,0,29,0,0,0,0,0,32,4,63,0,0,0,1,1,0,0,57,0,0,0,32,0,16,4,63,0,0,0,0,1,0,4,20,0,0,2,102,0,16,0,156,0,0,2,102,1,0,128,65,0,0,0,192,1,16,2,16,0,0,2,115,1,16,1,199,0,0,128,16,2,0,0,57,9,148,9,143,0,0,4,15,0,0,0,1,0,32,1,144,0,0,0,80,0,0,97,61,0,0,0,0,1,1,4,59,0,0,0,9,2,0,0,41,0,0,0,0,0,32,4,63,0,0,0,32,0,16,4,63,0,0,0,0,1,0,4,20,0,0,2,102,0,16,0,156,0,0,2,102,1,0,128,65,0,0,0,192,1,16,2,16,0,0,2,115,1,16,1,199,0,0,128,16,2,0,0,57,9,148,9,143,0,0,4,15,0,0,0,1,0,32,1,144,0,0,0,80,0,0,97,61,0,0,0,0,1,1,4,59,0,0,0,8,2,0,0,41,0,0,0,0,0,33,4,27,0,0,0,64,1,0,4,61,0,0,0,0,0,33,4,53,0,0,2,102,0,16,0,156,0,0,2,102,1,0,128,65,0,0,0,64,1,16,2,16,0,0,0,0,2,0,4,20,0,0,2,102,0,32,0,156,0,0,2,102,2,0,128,65,0,0,0,192,2,32,2,16,0,0,0,0,1,18,1,159,0,0,2,110,1,16,1,199,0,0,128,13,2,0,0,57,0,0,0,3,3,0,0,57,0,0,2,199,4,0,0,65,0,0,0,0,5,0,4,17,0,0,0,9,6,0,0,41,9,148,9,138,0,0,4,15,0,0,0,1,0,32,1,144,0,0,0,80,0,0,97,61,0,0,0,64,1,0,4,61,0,0,0,1,2,0,0,57,0,0,0,0,0,33,4,53,0,0,2,102,0,16,0,156,0,0,2,102,1,0,128,65,0,0,0,64,1,16,2,16,0,0,2,173,1,16,1,199,0,0,9,149,0,1,4,46,0,0,2,207,3,48,1,151,0,0,0,0,0,49,4,27,0,0,0,0,1,0,4,17,0,0,0,0,0,18,4,53,0,0,2,102,0,32,0,156,0,0,2,102,2,0,128,65,0,0,0,64,1,32,2,16,0,0,0,0,2,0,4,20,0,0,2,102,0,32,0,156,0,0,2,102,2,0,128,65,0,0,0,192,2,32,2,16,0,0,0,0,1,18,1,159,0,0,2,110,1,16,1,199,0,0,128,13,2,0,0,57,0,0,0,1,3,0,0,57,0,0,2,195,4,0,0,65,0,0,4,254,0,0,1,61,0,0,2,174,2,0,0,65,0,0,0,0,4,0,0,25,0,0,0,0,3,4,0,25,0,0,0,0,4,2,4,26,0,0,0,160,5,48,0,57,0,0,0,0,0,69,4,53,0,0,0,1,2,32,0,57,0,0,0,32,4,48,0,57,0,0,0,0,0,20,0,75,0,0,4,6,0,0,65,61,0,0,0,192,1,48,0,57,0,0,0,128,2,16,0,138,0,0,0,128,1,0,0,57,9,148,7,114,0,0,4,15,0,0,0,64,1,0,4,61,0,9,0,0,0,1,0,29,0,0,0,128,2,0,0,57,9,148,7,93,0,0,4,15,0,0,0,9,2,0,0,41,0,0,0,0,1,33,0,73,0,0,2,102,0,16,0,156,0,0,2,102,1,0,128,65,0,0,0,96,1,16,2,16,0,0,2,102,0,32,0,156,0,0,2,102,2,0,128,65,0,0,0,64,2,32,2,16,0,0,0,0,1,33,1,159,0,0,9,149,0,1,4,46,0,0,0,9,4,0,0,41,0,0,1,245,0,64,0,140,0,0,4,231,0,0,65,61,0,0,0,68,1,32,0,57,0,0,2,179,3,0,0,65,0,0,0,0,0,49,4,53,0,0,0,36,1,32,0,57,0,0,0,10,3,0,0,57,0,0,0,0,0,49,4,53,0,0,2,122,1,0,0,65,0,0,0,0,0,18,4,53,0,0,0,4,1,32,0,57,0,0,0,32,3,0,0,57,0,0,0,0,0,49,4,53,0,0,2,102,0,32,0,156,0,0,2,102,2,0,128,65,0,0,0,64,1,32,2,16,0,0,2,123,1,16,1,199,0,0,9,150,0,1,4,48,0,0,0,6,1,0,0,57,0,0,0,0,1,1,4,26,0,0,0,255,0,16,1,144,0,0,7,85,0,0,193,61,0,0,0,64,3,0,4,61,0,0,0,9,0,0,0,107,0,0,5,14,0,0,193,61,0,0,0,68,1,48,0,57,0,0,2,124,2,0,0,65,0,0,0,0,0,33,4,53,0,0,0,36,1,48,0,57,0,0,0,12,2,0,0,57,0,0,5,21,0,0,1,61,0,0,0,1,3,32,0,138,0,0,0,5,3,48,2,112,0,0,0,0,4,49,0,25,0,0,0,32,3,0,0,57,0,0,0,1,4,64,0,57,0,0,0,7,7,0,0,41,0,0,0,0,5,131,0,25,0,0,0,0,5,5,4,51,0,0,0,0,0,81,4,27,0,0,0,32,3,48,0,57,0,0,0,1,1,16,0,57,0,0,0,0,0,65,0,75,0,0,4,70,0,0,193,61,0,0,0,0,0,146,0,75,0,0,4,87,0,0,129,61,0,0,0,3,2,144,2,16,0,0,0,248,2,32,1,143,0,0,2,209,2,32,2,127,0,0,2,209,2,32,1,103,0,0,0,0,3,131,0,25,0,0,0,0,3,3,4,51,0,0,0,0,2,35,1,111,0,0,0,0,0,33,4,27,0,0,0,1,1,144,2,16,0,0,0,1,1,16,1,191,0,0,0,8,5,0,0,41,0,0,0,3,4,0,0,57,0,0,0,0,0,20,4,27,0,0,0,0,7,7,4,51,0,0,2,109,0,112,0,156,0,0,0,236,0,0,33,61,0,0,0,4,4,0,0,57,0,0,0,0,1,4,4,26,0,0,0,1,0,16,1,144,0,0,0,1,3,16,2,112,0,0,0,127,3,48,97,143,0,0,0,31,0,48,0,140,0,0,0,0,2,0,0,57,0,0,0,1,2,0,32,57,0,0,0,0,1,33,1,63,0,0,0,1,0,16,1,144,0,0,3,56,0,0,193,61,0,0,0,32,0,48,0,140,0,0,4,139,0,0,65,61,0,5,0,0,0,3,0,29,0,6,0,0,0,7,0,29,0,0,0,0,0,64,4,63,0,0,0,0,1,0,4,20,0,0,2,102,0,16,0,156,0,0,2,102,1,0,128,65,0,0,0,192,1,16,2,16,0,0,2,110,1,16,1,199,0,0,128,16,2,0,0,57,9,148,9,143,0,0,4,15,0,0,0,1,0,32,1,144,0,0,0,80,0,0,97,61,0,0,0,6,7,0,0,41,0,0,0,31,2,112,0,57,0,0,0,5,2,32,2,112,0,0,0,32,0,112,0,140,0,0,0,0,2,0,64,25,0,0,0,0,3,1,4,59,0,0,0,5,1,0,0,41,0,0,0,31,1,16,0,57,0,0,0,5,1,16,2,112,0,0,0,0,1,19,0,25,0,0,0,0,2,35,0,25,0,0,0,0,0,18,0,75,0,0,0,4,4,0,0,57,0,0,0,8,5,0,0,41,0,0,4,139,0,0,129,61,0,0,0,0,0,2,4,27,0,0,0,1,2,32,0,57,0,0,0,0,0,18,0,75,0,0,4,135,0,0,65,61,0,0,0,31,0,112,0,140,0,0,5,3,0,0,161,61,0,6,0,0,0,7,0,29,0,0,0,0,0,64,4,63,0,0,0,0,1,0,4,20,0,0,2,102,0,16,0,156,0,0,2,102,1,0,128,65,0,0,0,192,1,16,2,16,0,0,2,110,1,16,1,199,0,0,128,16,2,0,0,57,9,148,9,143,0,0,4,15,0,0,0,1,0,32,1,144,0,0,0,80,0,0,97,61,0,0,0,32,2,0,0,138,0,0,0,6,2,32,1,128,0,0,0,0,1,1,4,59,0,0,5,166,0,0,193,61,0,0,0,32,3,0,0,57,0,0,5,179,0,0,1,61,0,0,0,9,1,0,0,41,0,0,0,0,0,16,4,63,0,0,0,5,1,0,0,57,0,0,0,32,0,16,4,63,0,0,0,0,1,0,4,20,0,0,2,102,0,16,0,156,0,0,2,102,1,0,128,65,0,0,0,192,1,16,2,16,0,0,2,115,1,16,1,199,0,0,128,16,2,0,0,57,9,148,9,143,0,0,4,15,0,0,0,1,0,32,1,144,0,0,0,80,0,0,97,61,0,0,0,0,1,1,4,59,0,0,0,8,2,0,0,41,0,0,0,0,0,32,4,63,0,0,0,32,0,16,4,63,0,0,0,0,1,0,4,20,0,0,2,102,0,16,0,156,0,0,2,102,1,0,128,65,0,0,0,192,1,16,2,16,0,0,2,115,1,16,1,199,0,0,128,16,2,0,0,57,9,148,9,143,0,0,4,15,0,0,0,1,0,32,1,144,0,0,0,80,0,0,97,61,0,0,0,0,1,1,4,59,0,0,0,0,1,1,4,26,0,0,0,255,0,16,1,144,0,0,5,1,0,0,193,61,0,0,0,9,1,0,0,41,0,0,0,0,0,16,4,63,0,0,0,5,1,0,0,57,0,0,0,32,0,16,4,63,0,0,0,0,1,0,4,20,0,0,2,102,0,16,0,156,0,0,2,102,1,0,128,65,0,0,0,192,1,16,2,16,0,0,2,115,1,16,1,199,0,0,128,16,2,0,0,57,9,148,9,143,0,0,4,15,0,0,0,1,0,32,1,144,0,0,0,80,0,0,97,61,0,0,0,0,1,1,4,59,0,0,0,8,2,0,0,41,0,0,0,0,0,32,4,63,0,0,0,32,0,16,4,63,0,0,0,0,1,0,4,20,0,0,2,102,0,16,0,156,0,0,2,102,1,0,128,65,0,0,0,192,1,16,2,16,0,0,2,115,1,16,1,199,0,0,128,16,2,0,0,57,9,148,9,143,0,0,4,15,0,0,0,1,0,32,1,144,0,0,0,80,0,0,97,61,0,0,0,0,1,1,4,59,0,0,0,0,2,1,4,26,0,0,2,207,2,32,1,151,0,0,0,1,2,32,1,191,0,0,0,0,0,33,4,27,0,0,0,0,1,0,4,20,0,0,2,102,0,16,0,156,0,0,2,102,1,0,128,65,0,0,0,192,1,16,2,16,0,0,2,116,1,16,1,199,0,0,128,13,2,0,0,57,0,0,0,4,3,0,0,57,0,0,2,117,4,0,0,65,0,0,0,9,5,0,0,41,0,0,0,8,6,0,0,41,0,0,0,0,7,0,4,17,0,0,4,254,0,0,1,61,0,0,0,7,1,0,0,57,0,0,0,0,0,65,4,27,0,0,0,8,1,0,0,57,0,0,0,0,3,1,4,26,0,0,2,113,3,48,1,151,0,0,0,8,5,0,0,41,0,0,0,0,3,83,1,159,0,0,0,0,0,49,4,27,0,0,0,32,1,32,0,57,0,0,0,0,0,81,4,53,0,0,0,0,0,66,4,53,0,0,2,102,0,32,0,156,0,0,2,102,2,0,128,65,0,0,0,64,1,32,2,16,0,0,0,0,2,0,4,20,0,0,2,102,0,32,0,156,0,0,2,102,2,0,128,65,0,0,0,192,2,32,2,16,0,0,0,0,1,18,1,159,0,0,2,115,1,16,1,199,0,0,128,13,2,0,0,57,0,0,0,1,3,0,0,57,0,0,2,178,4,0,0,65,9,148,9,138,0,0,4,15,0,0,0,1,0,32,1,144,0,0,0,80,0,0,97,61,0,0,0,0,1,0,0,25,0,0,9,149,0,1,4,46,0,0,0,0,0,7,0,75,0,0,0,0,1,0,0,25,0,0,5,7,0,0,97,61,0,0,0,0,1,5,4,51,0,0,0,3,2,112,2,16,0,0,2,209,2,32,2,127,0,0,2,209,2,32,1,103,0,0,0,0,1,33,1,111,0,0,0,1,2,112,2,16,0,0,0,0,1,33,1,159,0,0,5,193,0,0,1,61,0,0,0,8,0,0,0,107,0,0,5,32,0,0,193,61,0,0,0,68,1,48,0,57,0,0,2,194,2,0,0,65,0,0,0,0,0,33,4,53,0,0,0,36,1,48,0,57,0,0,0,11,2,0,0,57,0,0,0,0,0,33,4,53,0,0,2,122,1,0,0,65,0,0,0,0,0,19,4,53,0,0,0,4,1,48,0,57,0,0,0,32,2,0,0,57,0,0,0,0,0,33,4,53,0,0,2,102,0,48,0,156,0,0,2,102,3,0,128,65,0,0,0,64,1,48,2,16,0,0,2,123,1,16,1,199,0,0,9,150,0,1,4,48,0,0,2,180,1,0,0,65,0,7,0,0,0,3,0,29,0,0,0,0,1,19,4,54,0,6,0,0,0,1,0,29,0,0,2,172,1,0,0,65,0,0,0,0,0,16,4,67,0,0,0,0,1,0,4,18,0,0,0,4,0,16,4,67,0,0,0,36,0,0,4,67,0,0,0,0,1,0,4,20,0,0,2,102,0,16,0,156,0,0,2,102,1,0,128,65,0,0,0,192,1,16,2,16,0,0,2,181,1,16,1,199,0,0,128,5,2,0,0,57,9,148,9,143,0,0,4,15,0,0,0,1,0,32,1,144,0,0,7,16,0,0,97,61,0,0,0,0,2,1,4,59,0,0,0,7,1,0,0,41,0,0,2,102,0,16,0,156,0,0,2,102,1,0,128,65,0,0,0,64,1,16,2,16,0,0,0,0,3,0,4,20,0,0,2,102,0,48,0,156,0,0,2,102,3,0,128,65,0,0,0,192,3,48,2,16,0,0,0,0,1,19,1,159,0,0,2,112,1,16,1,199,0,0,2,105,2,32,1,151,9,148,9,143,0,0,4,15,0,0,0,96,3,16,2,112,0,0,2,102,3,48,1,151,0,0,0,160,0,48,0,140,0,0,0,160,4,0,0,57,0,0,0,0,4,3,64,25,0,0,0,31,6,64,1,143,0,0,0,224,7,64,1,144,0,0,0,7,5,112,0,41,0,0,5,78,0,0,97,61,0,0,0,0,8,1,3,79,0,0,0,7,9,0,0,41,0,0,0,0,138,8,4,60,0,0,0,0,9,169,4,54,0,0,0,0,0,89,0,75,0,0,5,74,0,0,193,61,0,0,0,0,0,6,0,75,0,0,5,91,0,0,97,61,0,0,0,0,7,113,3,79,0,0,0,3,6,96,2,16,0,0,0,0,8,5,4,51,0,0,0,0,8,104,1,207,0,0,0,0,8,104,2,47,0,0,0,0,7,7,4,59,0,0,1,0,6,96,0,137,0,0,0,0,7,103,2,47,0,0,0,0,6,103,1,207,0,0,0,0,6,134,1,159,0,0,0,0,0,101,4,53,0,0,0,1,0,32,1,144,0,0,6,71,0,0,97,61,0,0,0,31,1,64,0,57,0,0,1,224,2,16,1,143,0,0,0,7,1,32,0,41,0,0,0,0,0,33,0,75,0,0,0,0,2,0,0,57,0,0,0,1,2,0,64,57,0,0,2,109,0,16,0,156,0,0,0,236,0,0,33,61,0,0,0,1,0,32,1,144,0,0,0,236,0,0,193,61,0,0,0,64,0,16,4,63,0,0,0,160,0,48,0,140,0,0,0,80,0,0,65,61,0,0,0,7,2,0,0,41,0,0,0,0,2,2,4,51,0,0,2,182,0,32,0,156,0,0,0,80,0,0,33,61,0,0,0,7,2,0,0,41,0,0,0,128,2,32,0,57,0,0,0,0,2,2,4,51,0,0,2,182,0,32,0,156,0,0,0,80,0,0,33,61,0,0,0,6,2,0,0,41,0,0,0,0,2,2,4,51,0,6,0,0,0,2,0,29,0,0,2,183,0,32,0,156,0,0,6,230,0,0,33,61,0,0,0,6,0,0,0,107,0,0,6,230,0,0,97,61,0,0,0,7,1,0,0,41,0,0,0,96,1,16,0,57,0,0,0,0,1,1,4,51,0,7,0,0,0,1,0,29,0,0,2,185,1,0,0,65,0,0,0,0,0,16,4,67,0,0,0,0,1,0,4,20,0,0,2,102,0,16,0,156,0,0,2,102,1,0,128,65,0,0,0,192,1,16,2,16,0,0,2,186,1,16,1,199,0,0,128,11,2,0,0,57,9,148,9,143,0,0,4,15,0,0,0,1,0,32,1,144,0,0,7,16,0,0,97,61,0,0,0,0,1,1,4,59,0,5,0,0,0,1,0,29,0,7,0,7,0,16,0,116,0,0,5,159,0,0,65,61,0,0,2,172,1,0,0,65,0,0,0,0,0,16,4,67,0,0,0,0,1,0,4,18,0,0,0,4,0,16,4,67,0,0,0,96,1,0,0,57,0,0,0,36,0,16,4,67,0,0,0,0,1,0,4,20,0,0,2,102,0,16,0,156,0,0,2,102,1,0,128,65,0,0,0,192,1,16,2,16,0,0,2,181,1,16,1,199,0,0,128,5,2,0,0,57,9,148,9,143,0,0,4,15,0,0,0,1,0,32,1,144,0,0,7,16,0,0,97,61,0,0,0,0,1,1,4,59,0,0,0,7,0,16,0,107,0,0,6,236,0,0,161,61,0,0,0,64,1,0,4,61,0,0,0,68,2,16,0,57,0,0,2,193,3,0,0,65,0,0,0,0,0,50,4,53,0,0,0,36,2,16,0,57,0,0,0,13,3,0,0,57,0,0,6,30,0,0,1,61,0,0,0,1,3,32,0,138,0,0,0,5,3,48,2,112,0,0,0,0,4,49,0,25,0,0,0,32,3,0,0,57,0,0,0,1,4,64,0,57,0,0,0,7,6,0,0,41,0,0,0,0,5,99,0,25,0,0,0,0,5,5,4,51,0,0,0,0,0,81,4,27,0,0,0,32,3,48,0,57,0,0,0,1,1,16,0,57,0,0,0,0,0,65,0,75,0,0,5,172,0,0,193,61,0,0,0,6,5,0,0,41,0,0,0,0,0,82,0,75,0,0,5,190,0,0,129,61,0,0,0,3,2,80,2,16,0,0,0,248,2,32,1,143,0,0,2,209,2,32,2,127,0,0,2,209,2,32,1,103,0,0,0,7,3,48,0,41,0,0,0,0,3,3,4,51,0,0,0,0,2,35,1,111,0,0,0,0,0,33,4,27,0,0,0,1,1,80,2,16,0,0,0,1,1,16,1,191,0,0,0,4,4,0,0,57,0,0,0,4,3,0,0,41,0,0,0,0,0,20,4,27,0,0,0,50,1,0,0,57,0,0,0,7,2,0,0,57,0,0,0,0,0,18,4,27,0,0,0,64,4,0,4,61,0,0,2,105,2,48,1,152,0,0,5,217,0,0,193,61,0,0,0,68,1,64,0,57,0,0,2,124,2,0,0,65,0,0,0,0,0,33,4,53,0,0,0,36,1,64,0,57,0,0,0,12,2,0,0,57,0,0,0,0,0,33,4,53,0,0,2,122,1,0,0,65,0,0,0,0,0,20,4,53,0,0,0,4,1,64,0,57,0,0,0,32,2,0,0,57,0,0,0,0,0,33,4,53,0,0,2,102,0,64,0,156,0,0,2,102,4,0,128,65,0,0,0,64,1,64,2,16,0,0,2,123,1,16,1,199,0,0,9,150,0,1,4,48,0,0,2,111,1,0,0,65,0,0,0,0,0,20,4,53,0,0,2,102,0,64,0,156,0,0,2,102,1,0,0,65,0,0,0,0,1,4,64,25,0,0,0,64,1,16,2,16,0,0,0,0,3,0,4,20,0,0,2,102,0,48,0,156,0,0,2,102,3,0,128,65,0,0,0,192,3,48,2,16,0,0,0,0,1,19,1,159,0,0,2,112,1,16,1,199,0,7,0,0,0,2,0,29,0,8,0,0,0,4,0,29,9,148,9,143,0,0,4,15,0,0,0,96,3,16,2,112,0,0,2,102,3,48,1,151,0,0,0,32,0,48,0,140,0,0,0,32,4,0,0,57,0,0,0,0,4,3,64,25,0,0,0,31,6,64,1,143,0,0,0,32,7,64,1,144,0,0,0,8,11,0,0,41,0,0,0,8,5,112,0,41,0,0,5,248,0,0,97,61,0,0,0,0,8,1,3,79,0,0,0,0,9,11,0,25,0,0,0,0,138,8,4,60,0,0,0,0,9,169,4,54,0,0,0,0,0,89,0,75,0,0,5,244,0,0,193,61,0,0,0,0,0,6,0,75,0,0,6,5,0,0,97,61,0,0,0,0,7,113,3,79,0,0,0,3,6,96,2,16,0,0,0,0,8,5,4,51,0,0,0,0,8,104,1,207,0,0,0,0,8,104,2,47,0,0,0,0,7,7,4,59,0,0,1,0,6,96,0,137,0,0,0,0,7,103,2,47,0,0,0,0,6,103,1,207,0,0,0,0,6,134,1,159,0,0,0,0,0,101,4,53,0,0,0,1,0,32,1,144,0,0,6,41,0,0,97,61,0,0,0,31,1,64,0,57,0,0,0,96,2,16,1,143,0,0,0,0,1,178,0,25,0,0,0,0,0,33,0,75,0,0,0,0,2,0,0,57,0,0,0,1,2,0,64,57,0,0,2,109,0,16,0,156,0,0,0,236,0,0,33,61,0,0,0,1,0,32,1,144,0,0,0,236,0,0,193,61,0,0,0,64,0,16,4,63,0,0,0,32,0,48,0,140,0,0,0,80,0,0,65,61,0,0,0,0,2,11,4,51,0,0,0,255,0,32,0,140,0,0,0,80,0,0,33,61,0,0,0,18,0,32,0,140,0,0,6,83,0,0,161,61,0,0,0,68,2,16,0,57,0,0,2,121,3,0,0,65,0,0,0,0,0,50,4,53,0,0,0,36,2,16,0,57,0,0,0,19,3,0,0,57,0,0,0,0,0,50,4,53,0,0,2,122,2,0,0,65,0,0,0,0,0,33,4,53,0,0,0,4,2,16,0,57,0,0,0,32,3,0,0,57,0,0,0,0,0,50,4,53,0,0,2,102,0,16,0,156,0,0,2,102,1,0,128,65,0,0,0,64,1,16,2,16,0,0,2,123,1,16,1,199,0,0,9,150,0,1,4,48,0,0,0,31,5,48,1,143,0,0,2,104,6,48,1,152,0,0,0,64,2,0,4,61,0,0,0,0,4,98,0,25,0,0,6,52,0,0,97,61,0,0,0,0,7,1,3,79,0,0,0,0,8,2,0,25,0,0,0,0,121,7,4,60,0,0,0,0,8,152,4,54,0,0,0,0,0,72,0,75,0,0,6,48,0,0,193,61,0,0,0,0,0,5,0,75,0,0,6,65,0,0,97,61,0,0,0,0,1,97,3,79,0,0,0,3,5,80,2,16,0,0,0,0,6,4,4,51,0,0,0,0,6,86,1,207,0,0,0,0,6,86,2,47,0,0,0,0,1,1,4,59,0,0,1,0,5,80,0,137,0,0,0,0,1,81,2,47,0,0,0,0,1,81,1,207,0,0,0,0,1,97,1,159,0,0,0,0,0,20,4,53,0,0,0,96,1,48,2,16,0,0,2,102,0,32,0,156,0,0,2,102,2,0,128,65,0,0,0,64,2,32,2,16,0,0,0,0,1,18,1,159,0,0,9,150,0,1,4,48,0,0,0,31,5,48,1,143,0,0,2,104,6,48,1,152,0,0,0,64,2,0,4,61,0,0,0,0,4,98,0,25,0,0,6,52,0,0,97,61,0,0,0,0,7,1,3,79,0,0,0,0,8,2,0,25,0,0,0,0,121,7,4,60,0,0,0,0,8,152,4,54,0,0,0,0,0,72,0,75,0,0,6,78,0,0,193,61,0,0,6,52,0,0,1,61,0,0,0,7,1,0,0,41,0,0,0,128,0,16,4,63,0,0,0,160,0,32,4,63,0,0,0,18,0,32,0,140,0,0,6,90,0,0,193,61,0,0,0,1,1,0,0,57,0,0,6,100,0,0,1,61,0,0,0,10,3,0,0,57,0,0,0,1,1,0,0,57,0,0,0,18,2,32,0,137,0,0,0,1,0,32,1,144,0,0,0,0,4,51,0,169,0,0,0,1,3,0,96,57,0,0,0,0,1,19,0,169,0,0,0,1,2,32,2,114,0,0,0,0,3,4,0,25,0,0,6,93,0,0,193,61,0,0,0,192,0,16,4,63,0,0,0,3,1,0,0,41,0,0,0,224,0,16,4,63,0,0,0,9,1,0,0,41,0,0,2,105,1,16,1,151,0,0,0,8,2,0,0,57,0,0,0,0,3,2,4,26,0,0,2,113,3,48,1,151,0,0,0,0,1,19,1,159,0,0,0,0,0,18,4,27,0,0,0,0,1,0,4,17,0,0,2,105,1,16,1,151,0,9,0,0,0,1,0,29,0,0,0,0,0,16,4,63,0,0,2,114,1,0,0,65,0,0,0,32,0,16,4,63,0,0,0,0,1,0,4,20,0,0,2,102,0,16,0,156,0,0,2,102,1,0,128,65,0,0,0,192,1,16,2,16,0,0,2,115,1,16,1,199,0,0,128,16,2,0,0,57,9,148,9,143,0,0,4,15,0,0,0,1,0,32,1,144,0,0,0,80,0,0,97,61,0,0,0,0,1,1,4,59,0,0,0,0,1,1,4,26,0,0,0,255,0,16,1,144,0,0,6,161,0,0,193,61,0,0,0,9,1,0,0,41,0,0,0,0,0,16,4,63,0,0,2,114,1,0,0,65,0,0,0,32,0,16,4,63,0,0,0,0,1,0,4,20,0,0,2,102,0,16,0,156,0,0,2,102,1,0,128,65,0,0,0,192,1,16,2,16,0,0,2,115,1,16,1,199,0,0,128,16,2,0,0,57,9,148,9,143,0,0,4,15,0,0,0,1,0,32,1,144,0,0,0,80,0,0,97,61,0,0,0,0,1,1,4,59,0,0,0,0,2,1,4,26,0,0,2,207,2,32,1,151,0,0,0,1,2,32,1,191,0,0,0,0,0,33,4,27,0,0,0,0,1,0,4,20,0,0,2,102,0,16,0,156,0,0,2,102,1,0,128,65,0,0,0,192,1,16,2,16,0,0,2,116,1,16,1,199,0,0,128,13,2,0,0,57,0,0,0,4,3,0,0,57,0,0,2,117,4,0,0,65,0,0,0,0,5,0,0,25,0,0,0,9,6,0,0,41,0,0,0,0,7,0,4,17,9,148,9,138,0,0,4,15,0,0,0,1,0,32,1,144,0,0,0,80,0,0,97,61,0,0,0,9,1,0,0,41,0,0,0,0,0,16,4,63,0,0,2,118,1,0,0,65,0,0,0,32,0,16,4,63,0,0,0,0,1,0,4,20,0,0,2,102,0,16,0,156,0,0,2,102,1,0,128,65,0,0,0,192,1,16,2,16,0,0,2,115,1,16,1,199,0,0,128,16,2,0,0,57,9,148,9,143,0,0,4,15,0,0,0,1,0,32,1,144,0,0,0,80,0,0,97,61,0,0,0,0,1,1,4,59,0,0,0,0,1,1,4,26,0,0,0,255,0,16,1,144,0,0,6,210,0,0,193,61,0,0,0,9,1,0,0,41,0,0,0,0,0,16,4,63,0,0,2,118,1,0,0,65,0,0,0,32,0,16,4,63,0,0,0,0,1,0,4,20,0,0,2,102,0,16,0,156,0,0,2,102,1,0,128,65,0,0,0,192,1,16,2,16,0,0,2,115,1,16,1,199,0,0,128,16,2,0,0,57,9,148,9,143,0,0,4,15,0,0,0,1,0,32,1,144,0,0,0,80,0,0,97,61,0,0,0,0,1,1,4,59,0,0,0,0,2,1,4,26,0,0,2,207,2,32,1,151,0,0,0,1,2,32,1,191,0,0,0,0,0,33,4,27,0,0,0,0,1,0,4,20,0,0,2,102,0,16,0,156,0,0,2,102,1,0,128,65,0,0,0,192,1,16,2,16,0,0,2,116,1,16,1,199,0,0,128,13,2,0,0,57,0,0,0,4,3,0,0,57,0,0,2,117,4,0,0,65,0,0,2,119,5,0,0,65,0,0,0,9,6,0,0,41,0,0,0,0,7,0,4,17,9,148,9,138,0,0,4,15,0,0,0,1,0,32,1,144,0,0,0,80,0,0,97,61,0,0,0,128,1,0,4,61,0,0,1,64,0,0,4,67,0,0,1,96,0,16,4,67,0,0,0,160,1,0,4,61,0,0,0,32,2,0,0,57,0,0,1,128,0,32,4,67,0,0,1,160,0,16,4,67,0,0,0,192,1,0,4,61,0,0,0,64,3,0,0,57,0,0,1,192,0,48,4,67,0,0,1,224,0,16,4,67,0,0,0,96,1,0,0,57,0,0,0,224,3,0,4,61,0,0,2,0,0,16,4,67,0,0,2,32,0,48,4,67,0,0,1,0,0,32,4,67,0,0,0,4,1,0,0,57,0,0,1,32,0,16,4,67,0,0,2,120,1,0,0,65,0,0,9,149,0,1,4,46,0,0,0,68,2,16,0,57,0,0,2,184,3,0,0,65,0,0,0,0,0,50,4,53,0,0,0,36,2,16,0,57,0,0,0,10,3,0,0,57,0,0,6,30,0,0,1,61,0,0,0,2,1,0,0,57,0,0,0,0,2,1,4,26,0,7,0,0,0,2,0,29,0,0,0,8,0,32,0,42,0,0,7,17,0,0,65,61,0,0,2,172,1,0,0,65,0,0,0,0,0,16,4,67,0,0,0,0,1,0,4,18,0,0,0,4,0,16,4,67,0,0,0,64,1,0,0,57,0,0,0,36,0,16,4,67,0,0,0,0,1,0,4,20,0,0,2,102,0,16,0,156,0,0,2,102,1,0,128,65,0,0,0,192,1,16,2,16,0,0,2,181,1,16,1,199,0,0,128,5,2,0,0,57,9,148,9,143,0,0,4,15,0,0,0,1,0,32,1,144,0,0,7,16,0,0,97,61,0,0,0,0,1,1,4,59,0,0,0,6,2,16,0,185,0,0,0,6,3,32,0,250,0,0,0,0,0,49,0,75,0,0,7,17,0,0,193,61,0,0,0,7,3,0,0,41,0,0,0,8,1,48,0,41,0,0,0,0,0,33,0,75,0,0,7,23,0,0,161,61,0,0,0,64,1,0,4,61,0,0,0,68,2,16,0,57,0,0,2,190,3,0,0,65,0,0,0,0,0,50,4,53,0,0,0,36,2,16,0,57,0,0,0,15,3,0,0,57,0,0,6,30,0,0,1,61,0,0,0,0,0,1,4,47,0,0,2,191,1,0,0,65,0,0,0,0,0,16,4,63,0,0,0,17,1,0,0,57,0,0,0,4,0,16,4,63,0,0,2,192,1,0,0,65,0,0,9,150,0,1,4,48,0,0,0,6,2,0,0,57,0,0,0,0,2,2,4,26,0,0,0,255,0,32,1,144,0,0,7,85,0,0,193,61,0,0,0,2,2,0,0,57,0,0,0,0,0,18,4,27,0,0,0,9,1,0,0,41,0,0,0,0,0,16,4,63,0,0,0,32,0,0,4,63,0,0,0,0,1,0,4,20,0,0,2,102,0,16,0,156,0,0,2,102,1,0,128,65,0,0,0,192,1,16,2,16,0,0,2,115,1,16,1,199,0,0,128,16,2,0,0,57,9,148,9,143,0,0,4,15,0,0,0,1,0,32,1,144,0,0,0,80,0,0,97,61,0,0,0,0,1,1,4,59,0,0,0,0,2,1,4,26,0,0,0,8,3,0,0,41,0,0,0,0,2,50,0,25,0,0,0,0,0,33,4,27,0,0,0,64,1,0,4,61,0,0,0,0,0,49,4,53,0,0,2,102,0,16,0,156,0,0,2,102,1,0,128,65,0,0,0,64,1,16,2,16,0,0,0,0,2,0,4,20,0,0,2,102,0,32,0,156,0,0,2,102,2,0,128,65,0,0,0,192,2,32,2,16,0,0,0,0,1,18,1,159,0,0,2,110,1,16,1,199,0,0,128,13,2,0,0,57,0,0,0,3,3,0,0,57,0,0,2,188,4,0,0,65,0,0,0,0,5,0,0,25,0,0,0,9,6,0,0,41,9,148,9,138,0,0,4,15,0,0,0,1,0,32,1,144,0,0,0,80,0,0,97,61,0,0,0,64,1,0,4,61,0,0,0,32,2,16,0,57,0,0,0,5,3,0,0,41,0,0,0,0,0,50,4,53,0,0,0,8,2,0,0,41,0,0,0,0,0,33,4,53,0,0,2,102,0,16,0,156,0,0,2,102,1,0,128,65,0,0,0,64,1,16,2,16,0,0,0,0,2,0,4,20,0,0,2,102,0,32,0,156,0,0,2,102,2,0,128,65,0,0,0,192,2,32,2,16,0,0,0,0,1,18,1,159,0,0,2,115,1,16,1,199,0,0,128,13,2,0,0,57,0,0,0,2,3,0,0,57,0,0,2,189,4,0,0,65,0,0,0,9,5,0,0,41,0,0,4,254,0,0,1,61,0,0,0,64,1,0,4,61,0,0,2,187,2,0,0,65,0,0,0,0,0,33,4,53,0,0,2,102,0,16,0,156,0,0,2,102,1,0,128,65,0,0,0,64,1,16,2,16,0,0,2,112,1,16,1,199,0,0,9,150,0,1,4,48,0,0,0,32,3,0,0,57,0,0,0,0,4,49,4,54,0,0,0,0,50,2,4,52,0,0,0,0,0,36,4,53,0,0,0,64,1,16,0,57,0,0,0,0,0,2,0,75,0,0,7,108,0,0,97,61,0,0,0,0,4,0,0,25,0,0,0,0,5,65,0,25,0,0,0,0,6,67,0,25,0,0,0,0,6,6,4,51,0,0,0,0,0,101,4,53,0,0,0,32,4,64,0,57,0,0,0,0,0,36,0,75,0,0,7,101,0,0,65,61,0,0,0,0,3,33,0,25,0,0,0,0,0,3,4,53,0,0,0,31,2,32,0,57,0,0,2,208,2,32,1,151,0,0,0,0,1,33,0,25,0,0,0,0,0,1,4,45,0,0,0,31,2,32,0,57,0,0,2,208,2,32,1,151,0,0,0,0,1,18,0,25,0,0,0,0,0,33,0,75,0,0,0,0,2,0,0,57,0,0,0,1,2,0,64,57,0,0,2,109,0,16,0,156,0,0,7,126,0,0,33,61,0,0,0,1,0,32,1,144,0,0,7,126,0,0,193,61,0,0,0,64,0,16,4,63,0,0,0,0,0,1,4,45,0,0,2,191,1,0,0,65,0,0,0,0,0,16,4,63,0,0,0,65,1,0,0,57,0,0,0,4,0,16,4,63,0,0,2,192,1,0,0,65,0,0,9,150,0,1,4,48,0,0,0,64,5,16,0,57,0,0,0,0,0,69,4,53,0,0,0,32,4,16,0,57,0,0,0,0,0,52,4,53,0,0,2,105,2,32,1,151,0,0,0,0,0,33,4,53,0,0,0,96,1,16,0,57,0,0,0,0,0,1,4,45,0,4,0,0,0,0,0,2,0,2,0,0,0,3,0,29,0,4,0,0,0,2,0,29,0,0,2,105,1,16,1,151,0,1,0,0,0,1,0,29,0,0,0,0,0,16,4,63,0,0,0,1,1,0,0,57,0,0,0,32,0,16,4,63,0,0,0,0,1,0,4,20,0,0,2,102,0,16,0,156,0,0,2,102,1,0,128,65,0,0,0,192,1,16,2,16,0,0,2,115,1,16,1,199,0,0,128,16,2,0,0,57,9,148,9,143,0,0,4,15,0,0,0,1,0,32,1,144,0,0,7,215,0,0,97,61,0,0,0,0,1,1,4,59,0,0,0,4,2,0,0,41,0,0,2,105,2,32,1,151,0,3,0,0,0,2,0,29,0,0,0,0,0,32,4,63,0,0,0,32,0,16,4,63,0,0,0,0,1,0,4,20,0,0,2,102,0,16,0,156,0,0,2,102,1,0,128,65,0,0,0,192,1,16,2,16,0,0,2,115,1,16,1,199,0,0,128,16,2,0,0,57,9,148,9,143,0,0,4,15,0,0,0,1,0,32,1,144,0,0,7,215,0,0,97,61,0,0,0,4,2,0,0,41,0,0,0,0,1,1,4,59,0,0,0,0,3,1,4,26,0,0,2,209,0,48,0,156,0,0,7,214,0,0,97,61,0,0,0,2,4,0,0,41,0,0,0,0,5,67,0,75,0,0,7,217,0,0,65,61,0,0,0,1,1,0,0,41,0,0,0,0,0,1,0,75,0,0,7,233,0,0,97,61,0,4,0,0,0,5,0,29,0,0,0,3,0,0,0,107,0,0,7,236,0,0,97,61,0,0,0,0,0,16,4,63,0,0,0,1,1,0,0,57,0,0,0,32,0,16,4,63,0,0,0,0,1,0,4,20,0,0,2,102,0,16,0,156,0,0,2,102,1,0,128,65,0,0,0,192,1,16,2,16,0,0,2,115,1,16,1,199,0,0,128,16,2,0,0,57,9,148,9,143,0,0,4,15,0,0,0,1,0,32,1,144,0,0,7,215,0,0,97,61,0,0,0,0,1,1,4,59,0,0,0,3,2,0,0,41,0,0,0,0,0,32,4,63,0,0,0,32,0,16,4,63,0,0,0,0,1,0,4,20,0,0,2,102,0,16,0,156,0,0,2,102,1,0,128,65,0,0,0,192,1,16,2,16,0,0,2,115,1,16,1,199,0,0,128,16,2,0,0,57,9,148,9,143,0,0,4,15,0,0,0,1,0,32,1,144,0,0,7,215,0,0,97,61,0,0,0,0,1,1,4,59,0,0,0,4,2,0,0,41,0,0,0,0,0,33,4,27,0,0,0,0,0,1,4,45,0,0,0,0,1,0,0,25,0,0,9,150,0,1,4,48,0,0,0,64,5,0,4,61,0,3,0,0,0,5,0,29,0,0,2,210,1,0,0,65,0,0,0,0,0,21,4,53,0,0,0,4,1,80,0,57,9,148,7,132,0,0,4,15,0,0,0,3,2,0,0,41,0,0,0,0,1,33,0,73,0,0,2,102,0,16,0,156,0,0,2,102,1,0,128,65,0,0,0,96,1,16,2,16,0,0,2,102,0,32,0,156,0,0,2,102,2,0,128,65,0,0,0,64,2,32,2,16,0,0,0,0,1,33,1,159,0,0,9,150,0,1,4,48,0,0,0,64,1,0,4,61,0,0,2,202,2,0,0,65,0,0,7,238,0,0,1,61,0,0,0,64,1,0,4,61,0,0,2,200,2,0,0,65,0,0,0,0,0,33,4,53,0,0,0,4,2,16,0,57,0,0,0,0,0,2,4,53,0,0,2,102,0,16,0,156,0,0,2,102,1,0,128,65,0,0,0,64,1,16,2,16,0,0,2,192,1,16,1,199,0,0,9,150,0,1,4,48,0,5,0,0,0,0,0,2,0,5,0,0,0,3,0,29,0,0,2,105,3,16,1,152,0,0,8,71,0,0,97,61,0,0,0,0,4,1,0,25,0,4,2,105,0,32,1,156,0,0,8,74,0,0,97,61,0,1,0,0,0,4,0,29,0,0,0,6,1,0,0,57,0,0,0,0,1,1,4,26,0,0,0,255,0,16,1,144,0,0,8,84,0,0,193,61,0,3,0,0,0,3,0,29,0,0,0,0,0,48,4,63,0,0,0,32,0,0,4,63,0,0,0,0,1,0,4,20,0,0,2,102,0,16,0,156,0,0,2,102,1,0,128,65,0,0,0,192,1,16,2,16,0,0,2,115,1,16,1,199,0,0,128,16,2,0,0,57,9,148,9,143,0,0,4,15,0,0,0,1,0,32,1,144,0,0,8,69,0,0,97,61,0,0,0,0,1,1,4,59,0,0,0,0,3,1,4,26,0,2,0,5,0,48,0,116,0,0,8,92,0,0,65,61,0,0,0,3,1,0,0,41,0,0,0,0,0,16,4,63,0,0,0,32,0,0,4,63,0,0,0,0,1,0,4,20,0,0,2,102,0,16,0,156,0,0,2,102,1,0,128,65,0,0,0,192,1,16,2,16,0,0,2,115,1,16,1,199,0,0,128,16,2,0,0,57,9,148,9,143,0,0,4,15,0,0,0,1,0,32,1,144,0,0,8,69,0,0,97,61,0,0,0,0,1,1,4,59,0,0,0,2,2,0,0,41,0,0,0,0,0,33,4,27,0,0,0,4,1,0,0,41,0,0,0,0,0,16,4,63,0,0,0,0,1,0,4,20,0,0,2,102,0,16,0,156,0,0,2,102,1,0,128,65,0,0,0,192,1,16,2,16,0,0,2,115,1,16,1,199,0,0,128,16,2,0,0,57,9,148,9,143,0,0,4,15,0,0,0,1,0,32,1,144,0,0,8,69,0,0,97,61,0,0,0,0,1,1,4,59,0,0,0,0,2,1,4,26,0,0,0,5,3,0,0,41,0,0,0,0,2,50,0,25,0,0,0,0,0,33,4,27,0,0,0,64,1,0,4,61,0,0,0,0,0,49,4,53,0,0,2,102,0,16,0,156,0,0,2,102,1,0,128,65,0,0,0,64,1,16,2,16,0,0,0,0,2,0,4,20,0,0,2,102,0,32,0,156,0,0,2,102,2,0,128,65,0,0,0,192,2,32,2,16,0,0,0,0,1,18,1,159,0,0,2,110,1,16,1,199,0,0,128,13,2,0,0,57,0,0,0,3,3,0,0,57,0,0,2,188,4,0,0,65,0,0,0,3,5,0,0,41,0,0,0,4,6,0,0,41,9,148,9,138,0,0,4,15,0,0,0,1,0,32,1,144,0,0,8,69,0,0,97,61,0,0,0,0,0,1,4,45,0,0,0,0,1,0,0,25,0,0,9,150,0,1,4,48,0,0,0,64,1,0,4,61,0,0,2,213,2,0,0,65,0,0,8,76,0,0,1,61,0,0,0,64,1,0,4,61,0,0,2,212,2,0,0,65,0,0,0,0,0,33,4,53,0,0,0,4,2,16,0,57,0,0,0,0,0,2,4,53,0,0,2,102,0,16,0,156,0,0,2,102,1,0,128,65,0,0,0,64,1,16,2,16,0,0,2,192,1,16,1,199,0,0,9,150,0,1,4,48,0,0,0,64,1,0,4,61,0,0,2,187,2,0,0,65,0,0,0,0,0,33,4,53,0,0,2,102,0,16,0,156,0,0,2,102,1,0,128,65,0,0,0,64,1,16,2,16,0,0,2,112,1,16,1,199,0,0,9,150,0,1,4,48,0,0,0,64,2,0,4,61,0,4,0,0,0,2,0,29,0,0,2,211,1,0,0,65,0,0,0,0,0,18,4,53,0,0,0,4,1,32,0,57,0,0,0,1,2,0,0,41,0,0,0,5,4,0,0,41,9,148,7,132,0,0,4,15,0,0,0,4,2,0,0,41,0,0,0,0,1,33,0,73,0,0,2,102,0,16,0,156,0,0,2,102,1,0,128,65,0,0,0,96,1,16,2,16,0,0,2,102,0,32,0,156,0,0,2,102,2,0,128,65,0,0,0,64,2,32,2,16,0,0,0,0,1,33,1,159,0,0,9,150,0,1,4,48,0,1,0,0,0,0,0,2,0,1,0,0,0,1,0,29,0,0,0,0,0,16,4,63,0,0,0,5,1,0,0,57,0,0,0,32,0,16,4,63,0,0,0,0,1,0,4,20,0,0,2,102,0,16,0,156,0,0,2,102,1,0,128,65,0,0,0,192,1,16,2,16,0,0,2,115,1,16,1,199,0,0,128,16,2,0,0,57,9,148,9,143,0,0,4,15,0,0,0,1,0,32,1,144,0,0,8,142,0,0,97,61,0,0,0,0,1,1,4,59,0,0,0,0,2,0,4,17,0,0,0,0,0,32,4,63,0,0,0,32,0,16,4,63,0,0,0,0,1,0,4,20,0,0,2,102,0,16,0,156,0,0,2,102,1,0,128,65,0,0,0,192,1,16,2,16,0,0,2,115,1,16,1,199,0,0,128,16,2,0,0,57,9,148,9,143,0,0,4,15,0,0,0,1,0,32,1,144,0,0,8,142,0,0,97,61,0,0,0,0,1,1,4,59,0,0,0,0,1,1,4,26,0,0,0,255,0,16,1,144,0,0,8,144,0,0,97,61,0,0,0,0,0,1,4,45,0,0,0,0,1,0,0,25,0,0,9,150,0,1,4,48,0,0,0,64,1,0,4,61,0,0,0,36,2,16,0,57,0,0,0,1,3,0,0,41,0,0,0,0,0,50,4,53,0,0,2,176,2,0,0,65,0,0,0,0,0,33,4,53,0,0,0,4,2,16,0,57,0,0,0,0,3,0,4,17,0,0,0,0,0,50,4,53,0,0,2,102,0,16,0,156,0,0,2,102,1,0,128,65,0,0,0,64,1,16,2,16,0,0,2,177,1,16,1,199,0,0,9,150,0,1,4,48,0,2,0,0,0,0,0,2,0,1,0,0,0,2,0,29,0,2,0,0,0,1,0,29,0,0,0,0,0,16,4,63,0,0,0,5,1,0,0,57,0,0,0,32,0,16,4,63,0,0,0,0,1,0,4,20,0,0,2,102,0,16,0,156,0,0,2,102,1,0,128,65,0,0,0,192,1,16,2,16,0,0,2,115,1,16,1,199,0,0,128,16,2,0,0,57,9,148,9,143,0,0,4,15,0,0,0,1,0,32,1,144,0,0,8,237,0,0,97,61,0,0,0,0,1,1,4,59,0,0,0,1,2,0,0,41,0,0,2,105,2,32,1,151,0,1,0,0,0,2,0,29,0,0,0,0,0,32,4,63,0,0,0,32,0,16,4,63,0,0,0,0,1,0,4,20,0,0,2,102,0,16,0,156,0,0,2,102,1,0,128,65,0,0,0,192,1,16,2,16,0,0,2,115,1,16,1,199,0,0,128,16,2,0,0,57,9,148,9,143,0,0,4,15,0,0,0,1,0,32,1,144,0,0,8,237,0,0,97,61,0,0,0,0,1,1,4,59,0,0,0,0,1,1,4,26,0,0,0,255,0,16,1,144,0,0,8,236,0,0,97,61,0,0,0,2,1,0,0,41,0,0,0,0,0,16,4,63,0,0,0,5,1,0,0,57,0,0,0,32,0,16,4,63,0,0,0,0,1,0,4,20,0,0,2,102,0,16,0,156,0,0,2,102,1,0,128,65,0,0,0,192,1,16,2,16,0,0,2,115,1,16,1,199,0,0,128,16,2,0,0,57,9,148,9,143,0,0,4,15,0,0,0,1,0,32,1,144,0,0,8,237,0,0,97,61,0,0,0,0,1,1,4,59,0,0,0,1,2,0,0,41,0,0,0,0,0,32,4,63,0,0,0,32,0,16,4,63,0,0,0,0,1,0,4,20,0,0,2,102,0,16,0,156,0,0,2,102,1,0,128,65,0,0,0,192,1,16,2,16,0,0,2,115,1,16,1,199,0,0,128,16,2,0,0,57,9,148,9,143,0,0,4,15,0,0,0,1,0,32,1,144,0,0,8,237,0,0,97,61,0,0,0,0,1,1,4,59,0,0,0,0,2,1,4,26,0,0,2,207,2,32,1,151,0,0,0,0,0,33,4,27,0,0,0,0,1,0,4,20,0,0,2,102,0,16,0,156,0,0,2,102,1,0,128,65,0,0,0,192,1,16,2,16,0,0,2,116,1,16,1,199,0,0,128,13,2,0,0,57,0,0,0,4,3,0,0,57,0,0,0,0,7,0,4,17,0,0,2,214,4,0,0,65,0,0,0,2,5,0,0,41,0,0,0,1,6,0,0,41,9,148,9,138,0,0,4,15,0,0,0,1,0,32,1,144,0,0,8,237,0,0,97,61,0,0,0,0,0,1,4,45,0,0,0,0,1,0,0,25,0,0,9,150,0,1,4,48,0,4,0,0,0,0,0,2,0,4,0,0,0,2,0,29,0,0,2,105,3,16,1,152,0,0,9,50,0,0,97,61,0,1,0,0,0,1,0,29,0,0,0,6,1,0,0,57,0,0,0,0,1,1,4,26,0,0,0,255,0,16,1,144,0,0,9,60,0,0,193,61,0,0,0,0,0,48,4,63,0,0,0,32,0,0,4,63,0,0,0,0,1,0,4,20,0,0,2,102,0,16,0,156,0,0,2,102,1,0,128,65,0,0,0,192,1,16,2,16,0,0,2,115,1,16,1,199,0,0,128,16,2,0,0,57,0,3,0,0,0,3,0,29,9,148,9,143,0,0,4,15,0,0,0,1,0,32,1,144,0,0,9,48,0,0,97,61,0,0,0,3,2,0,0,41,0,0,0,0,1,1,4,59,0,0,0,0,3,1,4,26,0,2,0,4,0,48,0,116,0,0,9,68,0,0,65,61,0,0,0,0,0,32,4,63,0,0,0,32,0,0,4,63,0,0,0,0,1,0,4,20,0,0,2,102,0,16,0,156,0,0,2,102,1,0,128,65,0,0,0,192,1,16,2,16,0,0,2,115,1,16,1,199,0,0,128,16,2,0,0,57,9,148,9,143,0,0,4,15,0,0,0,1,0,32,1,144,0,0,9,48,0,0,97,61,0,0,0,0,1,1,4,59,0,0,0,2,2,0,0,41,0,0,0,0,0,33,4,27,0,0,0,2,1,0,0,57,0,0,0,0,2,1,4,26,0,0,0,4,3,0,0,41,0,0,0,0,2,50,0,73,0,0,0,0,0,33,4,27,0,0,0,64,1,0,4,61,0,0,0,0,0,49,4,53,0,0,2,102,0,16,0,156,0,0,2,102,1,0,128,65,0,0,0,64,1,16,2,16,0,0,0,0,2,0,4,20,0,0,2,102,0,32,0,156,0,0,2,102,2,0,128,65,0,0,0,192,2,32,2,16,0,0,0,0,1,18,1,159,0,0,2,110,1,16,1,199,0,0,128,13,2,0,0,57,0,0,0,3,3,0,0,57,0,0,2,188,4,0,0,65,0,0,0,3,5,0,0,41,0,0,0,0,6,0,0,25,9,148,9,138,0,0,4,15,0,0,0,1,0,32,1,144,0,0,9,48,0,0,97,61,0,0,0,0,0,1,4,45,0,0,0,0,1,0,0,25,0,0,9,150,0,1,4,48,0,0,0,64,1,0,4,61,0,0,2,213,2,0,0,65,0,0,0,0,0,33,4,53,0,0,0,4,2,16,0,57,0,0,0,0,0,2,4,53,0,0,2,102,0,16,0,156,0,0,2,102,1,0,128,65,0,0,0,64,1,16,2,16,0,0,2,192,1,16,1,199,0,0,9,150,0,1,4,48,0,0,0,64,1,0,4,61,0,0,2,187,2,0,0,65,0,0,0,0,0,33,4,53,0,0,2,102,0,16,0,156,0,0,2,102,1,0,128,65,0,0,0,64,1,16,2,16,0,0,2,112,1,16,1,199,0,0,9,150,0,1,4,48,0,0,0,64,2,0,4,61,0,3,0,0,0,2,0,29,0,0,2,211,1,0,0,65,0,0,0,0,0,18,4,53,0,0,0,4,1,32,0,57,0,0,0,1,2,0,0,41,0,0,0,4,4,0,0,41,9,148,7,132,0,0,4,15,0,0,0,3,2,0,0,41,0,0,0,0,1,33,0,73,0,0,2,102,0,16,0,156,0,0,2,102,1,0,128,65,0,0,0,96,1,16,2,16,0,0,2,102,0,32,0,156,0,0,2,102,2,0,128,65,0,0,0,64,2,32,2,16,0,0,0,0,1,33,1,159,0,0,9,150,0,1,4,48,0,0,0,0,0,1,4,47,0,0,2,102,0,16,0,156,0,0,2,102,1,0,128,65,0,0,0,64,1,16,2,16,0,0,2,102,0,32,0,156,0,0,2,102,2,0,128,65,0,0,0,96,2,32,2,16,0,0,0,0,1,18,1,159,0,0,0,0,2,0,4,20,0,0,2,102,0,32,0,156,0,0,2,102,2,0,128,65,0,0,0,192,2,32,2,16,0,0,0,0,1,18,1,159,0,0,2,116,1,16,1,199,0,0,128,16,2,0,0,57,9,148,9,143,0,0,4,15,0,0,0,1,0,32,1,144,0,0,9,106,0,0,97,61,0,0,0,0,1,1,4,59,0,0,0,0,0,1,4,45,0,0,0,0,1,0,0,25,0,0,9,150,0,1,4,48,0,0,0,0,5,1,0,25,0,0,0,0,0,32,4,67,0,0,0,5,0,48,0,140,0,0,9,122,0,0,65,61,0,0,0,4,1,0,0,57,0,0,0,0,2,0,0,25,0,0,0,5,6,32,2,16,0,0,0,0,6,100,0,25,0,0,0,5,6,96,2,112,0,0,0,0,6,6,0,49,0,0,0,0,1,97,4,58,0,0,0,1,2,32,0,57,0,0,0,0,0,49,0,75,0,0,9,114,0,0,65,61,0,0,2,102,0,48,0,156,0,0,2,102,3,0,128,65,0,0,0,96,1,48,2,16,0,0,0,0,2,0,4,20,0,0,2,102,0,32,0,156,0,0,2,102,2,0,128,65,0,0,0,192,2,32,2,16,0,0,0,0,1,18,1,159,0,0,2,215,1,16,1,199,0,0,0,0,2,5,0,25,9,148,9,143,0,0,4,15,0,0,0,1,0,32,1,144,0,0,9,137,0,0,97,61,0,0,0,0,1,1,4,59,0,0,0,0,0,1,4,45,0,0,0,0,0,1,4,47,0,0,9,141,0,33,4,33,0,0,0,1,2,0,0,57,0,0,0,0,0,1,4,45,0,0,0,0,2,0,0,25,0,0,0,0,0,1,4,45,0,0,9,146,0,33,4,35,0,0,0,1,2,0,0,57,0,0,0,0,0,1,4,45,0,0,0,0,2,0,0,25,0,0,0,0,0,1,4,45,0,0,9,148,0,0,4,50,0,0,9,149,0,1,4,46,0,0,9,150,0,1,4,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,255,255,255,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,224,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,191,79,108,116,105,110,32,71,111,108,100,32,84,111,107,101,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,76,84,73,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,0,0,0,0,0,49,60,229,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,184,204,187,157,77,143,177,110,167,76,227,194,154,65,241,180,97,251,218,255,71,20,160,217,168,235,5,73,151,70,188,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,135,136,17,126,126,255,29,130,233,38,236,121,73,1,209,124,120,2,74,80,39,9,64,48,69,64,167,51,101,111,13,153,242,137,29,183,168,219,118,36,152,113,160,43,67,182,140,11,184,242,46,248,163,188,16,52,174,147,117,239,107,124,60,101,215,162,142,50,101,179,122,100,116,146,159,51,101,33,179,50,193,104,27,147,63,108,185,243,55,102,115,68,13,134,42,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,64,0,0,1,0,0,0,0,0,0,0,0,0,114,101,115,101,114,118,101,32,100,101,99,105,109,97,108,115,62,49,56,0,0,0,0,0,0,0,0,0,0,0,0,0,8,195,121,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,0,0,0,0,0,0,0,0,0,0,0,0,90,101,114,111,32,97,100,100,114,101,115,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,104,175,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,23,253,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,57,19,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,98,237,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,98,237,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,58,177,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,57,19,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,71,116,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,21,185,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,21,185,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,89,66,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,23,253,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,5,156,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,86,203,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,216,155,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,216,155,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,92,171,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,86,203,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,209,72,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,160,130,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,160,130,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,204,103,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,104,175,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,112,60,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,47,241,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,193,15,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,151,90,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,151,90,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,231,141,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,193,15,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,150,108,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,86,138,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,86,138,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,75,168,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,47,241,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,60,229,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,133,113,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,184,114,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,184,114,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,138,156,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,133,113,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,22,13,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,255,201,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,253,222,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,94,167,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,0,0,0,128,0,0,0,0,0,0,0,0,159,45,240,254,210,199,118,72,222,88,96,164,204,80,140,208,129,140,133,184,184,161,171,76,238,239,141,152,28,137,86,166,49,10,176,137,228,67,154,76,21,208,137,249,74,251,120,150,255,85,58,236,177,7,147,208,171,136,45,229,157,153,163,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,0,0,0,0,0,138,53,172,251,193,95,248,26,57,174,125,52,79,215,9,242,142,134,0,180,170,140,101,198,182,75,254,127,227,107,209,155,98,231,140,234,1,190,227,32,205,78,66,2,112,181,234,116,0,13,17,176,201,247,71,84,235,219,252,84,75,5,162,88,226,81,125,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,0,0,0,0,0,0,0,0,0,0,0,0,225,37,174,84,215,186,43,6,230,244,72,82,134,21,22,172,178,221,38,146,207,65,251,18,127,160,50,82,241,91,51,78,70,101,101,32,109,97,120,32,53,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,175,150,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,127,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,114,101,115,101,114,118,101,60,61,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,107,137,185,22,68,188,152,205,147,149,142,76,144,56,39,93,98,33,131,226,90,197,175,8,204,107,93,149,83,145,50,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,217,60,6,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,242,82,173,27,226,200,155,105,194,176,104,252,55,141,170,149,43,167,241,99,196,161,22,40,245,90,77,245,35,179,239,37,180,40,223,222,114,140,207,173,218,215,226,158,74,194,60,36,237,127,209,166,227,227,249,24,148,169,160,115,245,223,255,101,120,99,101,101,100,115,32,114,101,115,101,114,118,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,72,123,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,0,0,0,0,0,0,0,0,0,0,0,0,114,101,115,101,114,118,101,32,115,116,97,108,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,101,114,111,32,97,109,111,117,110,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,185,238,10,73,91,242,230,255,156,145,167,131,76,27,164,253,210,68,165,232,170,78,83,123,211,138,234,228,176,115,170,141,252,32,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,151,178,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,128,0,0,0,0,0,0,0,0,140,91,225,229,235,236,125,91,209,79,113,66,125,30,132,243,221,3,20,192,247,178,41,30,91,32,10,200,199,195,185,37,148,40,13,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,0,0,0,128,0,0,0,0,0,0,0,0,230,2,223,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,87,90,14,158,89,60,0,249,89,248,201,47,18,219,40,105,195,57,90,59,5,2,208,94,37,22,68,111,113,248,91,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,1,255,201,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,101,219,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,224,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,251,143,65,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,80,211,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,68,47,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,198,253,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,246,57,31,92,50,217,198,157,42,71,234,103,11,68,41,116,181,57,53,209,237,199,253,100,235,33,224,71,168,57,23,27,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,182,149,53,107,91,47,98,173,79,157,18,177,146,115,85,65,141,54,136,193,135,190,134,103,57,180,120,67,115,107,45],"abi":[{"inputs":[{"internalType":"address","name":"_reserveFeed","type":"address"},{"internalType":"uint256","name":"_maxAgeReserve","type":"uint256"},{"internalType":"address","name":"_feeCollector","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AccessControlBadConfirmation","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"name":"AccessControlUnauthorizedAccount","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC20InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC20InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC20InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"ERC20InvalidSpender","type":"error"},{"inputs":[],"name":"EnforcedPause","type":"error"},{"inputs":[],"name":"ExpectedPause","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"feeBps","type":"uint256"},{"indexed":false,"internalType":"address","name":"collector","type":"address"}],"name":"FeeConfigUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"Minted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINTER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PAUSER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"feeCollector","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxAgeReserve","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reserveDecimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reserveFeed","outputs":[{"internalType":"contract AggregatorV3Interface","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reserveScale","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_feeBps","type":"uint256"},{"internalType":"address","name":"_collector","type":"address"}],"name":"setFeeConfig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferFeeBps","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"}]},"verifiedAt":"2026-07-29T13:32:01.731056718Z"}